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(