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(


Reply via email to