You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by co...@apache.org on 2014/04/07 07:18:36 UTC

svn commit: r1585387 - in /webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax: ext/OutboundWSSec.java impl/processor/output/BinarySecurityTokenOutputProcessor.java impl/processor/output/SAMLTokenOutputProcessor.java

Author: coheigea
Date: Mon Apr  7 05:18:36 2014
New Revision: 1585387

URL: http://svn.apache.org/r1585387
Log:
Not outputting BinarySecurityToken for Signature in certain scenarios.

Modified:
    webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/OutboundWSSec.java
    webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/BinarySecurityTokenOutputProcessor.java
    webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/SAMLTokenOutputProcessor.java

Modified: webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/OutboundWSSec.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/OutboundWSSec.java?rev=1585387&r1=1585386&r2=1585387&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/OutboundWSSec.java (original)
+++ webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/OutboundWSSec.java Mon Apr  7 05:18:36 2014
@@ -285,6 +285,10 @@ public class OutboundWSSec {
                 } else if (WSSConstants.SAML_TOKEN_SIGNED.equals(action)) {
                     signatureAction = true;
                     signedSAML = true;
+                    final BinarySecurityTokenOutputProcessor binarySecurityTokenOutputProcessor =
+                        new BinarySecurityTokenOutputProcessor();
+                    initializeOutputProcessor(outputProcessorChain, binarySecurityTokenOutputProcessor, action);
+                        
                     final SAMLTokenOutputProcessor samlTokenOutputProcessor = new SAMLTokenOutputProcessor();
                     initializeOutputProcessor(outputProcessorChain, samlTokenOutputProcessor, action);
 

Modified: webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/BinarySecurityTokenOutputProcessor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/BinarySecurityTokenOutputProcessor.java?rev=1585387&r1=1585386&r2=1585387&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/BinarySecurityTokenOutputProcessor.java (original)
+++ webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/BinarySecurityTokenOutputProcessor.java Mon Apr  7 05:18:36 2014
@@ -85,7 +85,7 @@ public class BinarySecurityTokenOutputPr
             }
 
             if (securityToken != null) {
-                if ((WSSConstants.SIGNATURE.equals(action) || WSSConstants.SAML_TOKEN_SIGNED.equals(action))
+                if (WSSConstants.SIGNATURE.equals(action)
                     && (includeToken || WSSecurityTokenConstants.KeyIdentifier_SecurityTokenDirectReference.equals(keyIdentifier))
                     && (securityToken.getTokenType() == null || WSSecurityTokenConstants.X509V3Token.equals(securityToken.getTokenType()))) {
                     FinalBinarySecurityTokenOutputProcessor finalBinarySecurityTokenOutputProcessor = new FinalBinarySecurityTokenOutputProcessor(securityToken);
@@ -94,6 +94,14 @@ public class BinarySecurityTokenOutputPr
                     finalBinarySecurityTokenOutputProcessor.addBeforeProcessor(WSSSignatureOutputProcessor.class.getName());
                     finalBinarySecurityTokenOutputProcessor.init(outputProcessorChain);
                     securityToken.setProcessor(finalBinarySecurityTokenOutputProcessor);
+                } else if (WSSConstants.SAML_TOKEN_SIGNED.equals(action) && includeToken
+                    && (securityToken.getTokenType() == null || WSSecurityTokenConstants.X509V3Token.equals(securityToken.getTokenType()))) {
+                    FinalBinarySecurityTokenOutputProcessor finalBinarySecurityTokenOutputProcessor = new FinalBinarySecurityTokenOutputProcessor(securityToken);
+                    finalBinarySecurityTokenOutputProcessor.setXMLSecurityProperties(getSecurityProperties());
+                    finalBinarySecurityTokenOutputProcessor.setAction(getAction());
+                    finalBinarySecurityTokenOutputProcessor.addBeforeProcessor(WSSSignatureOutputProcessor.class.getName());
+                    finalBinarySecurityTokenOutputProcessor.init(outputProcessorChain);
+                    securityToken.setProcessor(finalBinarySecurityTokenOutputProcessor);
                 } else if (WSSConstants.ENCRYPT.equals(action)
                     && (includeToken || WSSecurityTokenConstants.KeyIdentifier_SecurityTokenDirectReference.equals(keyIdentifier))
                     && (securityToken.getTokenType() == null || WSSecurityTokenConstants.X509V3Token.equals(securityToken.getTokenType()))) {

Modified: webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/SAMLTokenOutputProcessor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/SAMLTokenOutputProcessor.java?rev=1585387&r1=1585386&r2=1585387&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/SAMLTokenOutputProcessor.java (original)
+++ webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/SAMLTokenOutputProcessor.java Mon Apr  7 05:18:36 2014
@@ -386,9 +386,7 @@ public class SAMLTokenOutputProcessor ex
             if (WSSUtils.isSecurityHeaderElement(xmlSecEvent, ((WSSSecurityProperties) getSecurityProperties()).getActor())) {
 
                 OutputProcessorChain subOutputProcessorChain = outputProcessorChain.createSubChain(this);
-                if (senderVouches && getSecurityProperties().getSignatureKeyIdentifier() ==
-                        WSSecurityTokenConstants.KeyIdentifier_SecurityTokenDirectReference
-                        && securityToken != null) {
+                if (includeBST()) {
 
                     WSSUtils.updateSecurityHeaderOrder(
                             outputProcessorChain, WSSConstants.TAG_wsse_BinarySecurityToken, getAction(), false);
@@ -415,6 +413,17 @@ public class SAMLTokenOutputProcessor ex
                 outputProcessorChain.removeProcessor(this);
             }
         }
+        
+        private boolean includeBST() {
+            if (senderVouches && getSecurityProperties().getSignatureKeyIdentifier() ==
+                WSSecurityTokenConstants.KeyIdentifier_SecurityTokenDirectReference
+                && securityToken != null
+                && !(WSSConstants.SAML_TOKEN_SIGNED.equals(action) 
+                    && ((WSSSecurityProperties)getSecurityProperties()).isIncludeSignatureToken())) {
+                return true;
+            } 
+            return false;
+        }
     }
     
     private void outputSecurityTokenReference(