Author: ruchithf
Date: Sun Jul 15 13:56:42 2007
New Revision: 556452

URL: http://svn.apache.org/viewvc?view=rev&rev=556452
Log:
Added a small hack to solve the tokens' refid issue and make sure we fisrt 
check the token storage whether we have a given token's secret befor tryign to 
extract it


Modified:
    
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
    
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java
    
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java

Modified: 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java?view=diff&rev=556452&r1=556451&r2=556452
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
 Sun Jul 15 13:56:42 2007
@@ -24,6 +24,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.rahas.Token;
+import org.apache.rahas.TokenStorage;
 import org.apache.rampart.policy.RampartPolicyData;
 import org.apache.rampart.util.Axis2Util;
 import org.apache.rampart.util.RampartUtil;
@@ -155,9 +156,12 @@
                 SAMLKeyInfo samlKi = SAMLUtil.getSAMLKeyInfo(assertion,
                         signatureCrypto, tokenCallbackHandler);
                 try {
-                    Token token = new Token(id, (OMElement)assertion.toDOM(), 
created, expires);
-                    token.setSecret(samlKi.getSecret());
-                    rmd.getTokenStorage().add(token);
+                    TokenStorage store = rmd.getTokenStorage(); 
+                    if(store.getToken(id) == null) {
+                        Token token = new Token(id, 
(OMElement)assertion.toDOM(), created, expires);
+                        token.setSecret(samlKi.getSecret());
+                        store.add(token);
+                    }
                 } catch (Exception e) {
                     throw new RampartException(
                             "errorInAddingTokenIntoStore", e);

Modified: 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java?view=diff&rev=556452&r1=556451&r2=556452
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java
 Sun Jul 15 13:56:42 2007
@@ -511,7 +511,14 @@
                 dkSign.prepare(doc, rmd.getSecHeader());
                 
                 if(rpd.isTokenProtection()) {
-                    sigParts.add(new WSEncryptionPart(tok.getId()));
+
+                    //Hack to handle reference id issues
+                    //TODO Need a better fix
+                    String sigTokId = tok.getId();
+                    if(sigTokId.startsWith("#")) {
+                        sigTokId = sigTokId.substring(1);
+                    }
+                    sigParts.add(new WSEncryptionPart(sigTokId));
                 }
                 
                 dkSign.setParts(sigParts);
@@ -545,7 +552,14 @@
             try {
                 WSSecSignature sig = new WSSecSignature();
                 sig.setWsConfig(rmd.getConfig());
-                sig.setCustomTokenId(tok.getId());
+                
+                //Hack to handle reference id issues
+                //TODO Need a better fix
+                String sigTokId = tok.getId();
+                if(sigTokId.startsWith("#")) {
+                    sigTokId = sigTokId.substring(1);
+                }
+                sig.setCustomTokenId(sigTokId);
                 sig.setCustomTokenValueType(WSConstants.WSS_SAML_NS +
                         WSConstants.SAML_ASSERTION_ID);
                 sig.setSecretKey(tok.getSecret());

Modified: 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java?view=diff&rev=556452&r1=556451&r2=556452
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java
 Sun Jul 15 13:56:42 2007
@@ -511,6 +511,11 @@
                 WSSecEncrypt encr = new WSSecEncrypt();
                 
                 encr.setWsConfig(rmd.getConfig());
+                //Hack to handle reference id issues
+                //TODO Need a better fix
+                if(encrTokId.startsWith("#")) {
+                    encrTokId = encrTokId.substring(1);
+                }
                 encr.setEncKeyId(encrTokId);
                 encr.setEphemeralKey(encrTok.getSecret());
                 RampartUtil.setEncryptionUser(rmd, encr);


Reply via email to