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);