Author: ruchithf
Date: Fri Nov  9 00:51:07 2007
New Revision: 593457

URL: http://svn.apache.org/viewvc?rev=593457&view=rev
Log:
A SecurityContextToken can be used without derived keys in 
WS-SecureConversation... This is when the policy doesn't specify 
requireDerivedKeys in the SecureConversation assertion.
Updated Rampart to this and this depends on teh latest WSS4J


Modified:
    
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/MessageBuilder.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
    
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java

Modified: 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/MessageBuilder.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/MessageBuilder.java?rev=593457&r1=593456&r2=593457&view=diff
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/MessageBuilder.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/MessageBuilder.java
 Fri Nov  9 00:51:07 2007
@@ -29,6 +29,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.rahas.RahasConstants;
+import org.apache.rahas.TokenStorage;
 import org.apache.rahas.TrustUtil;
 import org.apache.rampart.builder.AsymmetricBindingBuilder;
 import org.apache.rampart.builder.SymmetricBindingBuilder;
@@ -41,6 +42,7 @@
 import org.apache.ws.secpolicy.WSSPolicyException;
 import org.apache.ws.security.WSSecurityException;
 import org.apache.ws.security.handler.WSHandlerConstants;
+import org.apache.ws.security.message.token.SecurityContextToken;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
@@ -104,7 +106,11 @@
                 if(tokenId != null && RampartUtil.isTokenValid(rmd, tokenId)) {
                     OMElement bodyElem = msgCtx.getEnvelope().getBody();
                     OMElement child = bodyElem.getFirstElement();
-                    OMElement newChild = 
TrustUtil.createCancelRequest(tokenId, rmd.getWstVersion());
+                    SecurityContextToken sct = new SecurityContextToken(
+                            (Element) rmd.getTokenStorage().getToken(tokenId)
+                                    .getToken());
+                    OMElement newChild = TrustUtil.createCancelRequest(sct
+                            .getIdentifier(), rmd.getWstVersion());
                     Element newDomChild = XMLUtils.toDOM(newChild);
                     Node importedNode = rmd.getDocument().importNode((Element) 
newDomChild, true);
                     ((Element) bodyElem).replaceChild(importedNode, (Element) 
child);

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?rev=593457&r1=593456&r2=593457&view=diff
==============================================================================
--- 
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
 Fri Nov  9 00:51:07 2007
@@ -468,7 +468,7 @@
         
         RampartPolicyData rpd = rmd.getPolicyData();
         
-        if(policyToken.isDerivedKeys() || policyToken instanceof 
SecureConversationToken) {
+        if(policyToken.isDerivedKeys()) {
             try {
                 WSSecDKSign dkSign = new WSSecDKSign();
 

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?rev=593457&r1=593456&r2=593457&view=diff
==============================================================================
--- 
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
 Fri Nov  9 00:51:07 2007
@@ -520,7 +520,8 @@
         
         Element refList = null;
         if(encrParts.size() > 0) {
-            if(encrToken.isDerivedKeys() || encrToken instanceof 
SecureConversationToken) {
+            //The sec conv token can be used without derived keys
+            if(encrToken.isDerivedKeys()) {
                 
                 try {
                     WSSecDKEncrypt dkEncr = new WSSecDKEncrypt();
@@ -575,7 +576,7 @@
                     throw new RampartException("errorInDKEncr");
                 } catch (ConversationException e) {
                     throw new RampartException("errorInDKEncr");
-                }
+                }                
             } else {
                 try {
                     
@@ -596,8 +597,13 @@
                     
encr.setSymmetricEncAlgorithm(rpd.getAlgorithmSuite().getEncryption());
                     // Use key identifier in the KeyInfo in server side
                     if (!rmd.isInitiator()) {
-                       encr.setUseKeyIdentifier(true);
-                       
encr.setKeyIdentifierType(WSConstants.ENCRYPTED_KEY_SHA1_IDENTIFIER);
+                        if(encrTok instanceof EncryptedKeyToken) {
+                            encr.setUseKeyIdentifier(true);
+                            
encr.setCustomReferenceValue(((EncryptedKeyToken)encrTok).getSHA1());
+                            
encr.setKeyIdentifierType(WSConstants.ENCRYPTED_KEY_SHA1_IDENTIFIER);
+                        } else {
+                            encr.setEphemeralKey(encrTok.getSecret());
+                        }
                     }
                     encr.prepare(doc, RampartUtil.getEncryptionCrypto(rpd
                             .getRampartConfig(), rmd.getCustomClassLoader()));

Modified: 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java?rev=593457&r1=593456&r2=593457&view=diff
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
 Fri Nov  9 00:51:07 2007
@@ -497,6 +497,9 @@
                     client.setAddressingNs((String)addrVersionNs);
                 }
                 
+                //Set soap version
+                
client.setSoapVersion(msgContext.getOptions().getSoapVersionURI());
+                
                 //Make the request
                 org.apache.rahas.Token rst = 
                     client.requestSecurityToken(servicePolicy, 


Reply via email to