Author: coheigea
Date: Wed Oct 9 13:38:23 2013
New Revision: 1530602
URL: http://svn.apache.org/r1530602
Log:
Update to streaming ws-security code following recent merge to WSS4J
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractStaxBindingHandler.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/StaxSymmetricBindingHandler.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/StaxTransportBindingHandler.java
cxf/trunk/rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/saml/StaxToDOMSamlTest.java
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractStaxBindingHandler.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractStaxBindingHandler.java?rev=1530602&r1=1530601&r2=1530602&view=diff
==============================================================================
---
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractStaxBindingHandler.java
(original)
+++
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractStaxBindingHandler.java
Wed Oct 9 13:38:23 2013
@@ -204,7 +204,7 @@ public abstract class AbstractStaxBindin
}
protected SecurePart addKerberosToken(
- KerberosToken token, boolean signed, boolean endorsing
+ KerberosToken token, boolean signed, boolean endorsing, boolean
encrypting
) throws WSSecurityException {
IncludeTokenType includeToken = token.getIncludeTokenType();
if (!isTokenRequired(includeToken)) {
@@ -219,6 +219,7 @@ public abstract class AbstractStaxBindin
// Convert to WSS4J token
final KerberosClientSecurityToken wss4jToken =
new KerberosClientSecurityToken(secToken.getData(),
secToken.getKey(), secToken.getId());
+ wss4jToken.setSha1Identifier(secToken.getSHA1());
final SecurityTokenProvider<OutboundSecurityToken>
kerberosSecurityTokenProvider =
new SecurityTokenProvider<OutboundSecurityToken>() {
@@ -233,15 +234,21 @@ public abstract class AbstractStaxBindin
return wss4jToken.getId();
}
};
- outboundTokens.put(WSSConstants.PROP_USE_THIS_TOKEN_ID_FOR_BST,
+ outboundTokens.put(WSSConstants.PROP_USE_THIS_TOKEN_ID_FOR_KERBEROS,
kerberosSecurityTokenProvider);
+ if (encrypting) {
+
outboundTokens.put(WSSConstants.PROP_USE_THIS_TOKEN_ID_FOR_ENCRYPTION,
+ kerberosSecurityTokenProvider);
+ }
+ if (endorsing) {
+
outboundTokens.put(WSSConstants.PROP_USE_THIS_TOKEN_ID_FOR_SIGNATURE,
+ kerberosSecurityTokenProvider);
+ }
+
// Action
Map<String, Object> config = getProperties();
String actionToPerform = ConfigurationConstants.KERBEROS_TOKEN;
- if (endorsing) {
- actionToPerform =
ConfigurationConstants.SIGNATURE_WITH_KERBEROS_TOKEN;
- }
if (config.containsKey(ConfigurationConstants.ACTION)) {
String action = (String)config.get(ConfigurationConstants.ACTION);
@@ -259,7 +266,10 @@ public abstract class AbstractStaxBindin
}
*/
- return new SecurePart(WSSConstants.TAG_wsse_BinarySecurityToken,
Modifier.Element);
+ SecurePart securePart = new
SecurePart(WSSConstants.TAG_wsse_BinarySecurityToken, Modifier.Element);
+ securePart.setIdToSign(wss4jToken.getId());
+
+ return securePart;
}
protected SecurePart addSamlToken(
@@ -528,9 +538,10 @@ public abstract class AbstractStaxBindin
// Find out do we also need to include the token as per the Inclusion
requirement
if (token instanceof X509Token
- && token.getIncludeTokenType() !=
IncludeTokenType.INCLUDE_TOKEN_NEVER
+ && isTokenRequired(token.getIncludeTokenType())
&&
("IssuerSerial".equals(config.get(ConfigurationConstants.SIG_KEY_ID))
- ||
"Thumbprint".equals(config.get(ConfigurationConstants.SIG_KEY_ID)))) {
+ ||
"Thumbprint".equals(config.get(ConfigurationConstants.SIG_KEY_ID))
+ ||
"DirectReference".equals(config.get(ConfigurationConstants.SIG_KEY_ID)))) {
config.put(ConfigurationConstants.INCLUDE_SIGNATURE_TOKEN, "true");
} else {
config.put(ConfigurationConstants.INCLUDE_SIGNATURE_TOKEN,
"false");
@@ -749,7 +760,7 @@ public abstract class AbstractStaxBindin
}
}
} else if (isRequestor() && token instanceof KerberosToken) {
- SecurePart securePart = addKerberosToken((KerberosToken)token,
signed, endorse);
+ SecurePart securePart = addKerberosToken((KerberosToken)token,
signed, endorse, false);
if (securePart != null) {
ret.put(token, securePart);
if (suppTokens.isEncryptedToken()) {
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/StaxSymmetricBindingHandler.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/StaxSymmetricBindingHandler.java?rev=1530602&r1=1530601&r2=1530602&view=diff
==============================================================================
---
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/StaxSymmetricBindingHandler.java
(original)
+++
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/StaxSymmetricBindingHandler.java
Wed Oct 9 13:38:23 2013
@@ -39,6 +39,7 @@ import javax.xml.soap.SOAPException;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.message.MessageUtils;
import org.apache.cxf.ws.policy.AssertionInfoMap;
import org.apache.cxf.ws.security.SecurityConstants;
import org.apache.cxf.ws.security.tokenstore.SecurityToken;
@@ -153,7 +154,9 @@ public class StaxSymmetricBindingHandler
SecurityToken tok = null;
if (encryptionToken instanceof KerberosToken) {
tok = getSecurityToken();
- addKerberosToken((KerberosToken)encryptionToken, false, false);
+ if (MessageUtils.isRequestor(message)) {
+ addKerberosToken((KerberosToken)encryptionToken, false,
true, true);
+ }
} else if (encryptionToken instanceof IssuedToken) {
tok = getSecurityToken();
addIssuedToken((IssuedToken)encryptionToken, tok, false, true);
@@ -181,7 +184,9 @@ public class StaxSymmetricBindingHandler
}
// Store key
- storeSecurityToken(tok);
+ if (!(MessageUtils.isRequestor(message) && encryptionToken
instanceof KerberosToken)) {
+ storeSecurityToken(tok);
+ }
List<SecurePart> encrParts = null;
List<SecurePart> sigParts = null;
@@ -249,7 +254,9 @@ public class StaxSymmetricBindingHandler
if (sigToken != null) {
if (sigToken instanceof KerberosToken) {
sigTok = getSecurityToken();
- addKerberosToken((KerberosToken)sigToken, false, false);
+ if (MessageUtils.isRequestor(message)) {
+ addKerberosToken((KerberosToken)sigToken, false, true,
true);
+ }
} else if (sigToken instanceof IssuedToken) {
sigTok = getSecurityToken();
addIssuedToken((IssuedToken)sigToken, sigTok, false, true);
@@ -281,7 +288,9 @@ public class StaxSymmetricBindingHandler
}
// Store key
- storeSecurityToken(sigTok);
+ if (!(MessageUtils.isRequestor(message) && sigToken instanceof
KerberosToken)) {
+ storeSecurityToken(sigTok);
+ }
// Add timestamp
List<SecurePart> sigs = new ArrayList<SecurePart>();
@@ -415,7 +424,11 @@ public class StaxSymmetricBindingHandler
if (config.containsKey(ConfigurationConstants.ACTION)) {
String action = (String)config.get(ConfigurationConstants.ACTION);
- config.put(ConfigurationConstants.ACTION, action + " " +
actionToPerform);
+ if (action.contains(ConfigurationConstants.KERBEROS_TOKEN)) {
+ config.put(ConfigurationConstants.ACTION, actionToPerform + "
" + action);
+ } else {
+ config.put(ConfigurationConstants.ACTION, action + " " +
actionToPerform);
+ }
} else {
config.put(ConfigurationConstants.ACTION, actionToPerform);
}
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/StaxTransportBindingHandler.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/StaxTransportBindingHandler.java?rev=1530602&r1=1530601&r2=1530602&view=diff
==============================================================================
---
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/StaxTransportBindingHandler.java
(original)
+++
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/StaxTransportBindingHandler.java
Wed Oct 9 13:38:23 2013
@@ -172,7 +172,7 @@ public class StaxTransportBindingHandler
} else if (token instanceof IssuedToken) {
addIssuedToken((IssuedToken)token, getSecurityToken(), false,
false);
} else if (token instanceof KerberosToken) {
- addKerberosToken((KerberosToken)token, false, false);
+ addKerberosToken((KerberosToken)token, false, false, false);
} else if (token instanceof SamlToken) {
addSamlToken((SamlToken)token, false, false);
} else {
@@ -258,8 +258,7 @@ public class StaxTransportBindingHandler
|| token instanceof SpnegoContextToken) {
addSig(doIssuedTokenSignature(token, wrapper));
*/
- } else if (token instanceof X509Token
- || token instanceof KeyValueToken) {
+ } else if (token instanceof X509Token || token instanceof
KeyValueToken) {
doSignature(token, wrapper);
} else if (token instanceof SamlToken) {
addSamlToken((SamlToken)token, false, true);
@@ -273,10 +272,19 @@ public class StaxTransportBindingHandler
} else if (token instanceof UsernameToken) {
throw new Exception("Endorsing UsernameTokens are not supported in
the streaming code");
} else if (token instanceof KerberosToken) {
- addKerberosToken((KerberosToken)token, false, true);
+ Map<String, Object> config = getProperties();
+ String signatureAction = ConfigurationConstants.SIGNATURE;
+ if (config.containsKey(ConfigurationConstants.ACTION)) {
+ String action =
(String)config.get(ConfigurationConstants.ACTION);
+ config.put(ConfigurationConstants.ACTION, action + " " +
signatureAction);
+ } else {
+ config.put(ConfigurationConstants.ACTION, signatureAction);
+ }
+ configureSignature(wrapper, token, false);
+
+ addKerberosToken((KerberosToken)token, false, true, false);
signPartsAndElements(wrapper.getSignedParts(),
wrapper.getSignedElements());
- Map<String, Object> config = getProperties();
config.put(ConfigurationConstants.SIG_ALGO,
tbinding.getAlgorithmSuite().getSymmetricSignature());
AlgorithmSuiteType algType =
tbinding.getAlgorithmSuite().getAlgorithmSuiteType();
Modified:
cxf/trunk/rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/saml/StaxToDOMSamlTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/saml/StaxToDOMSamlTest.java?rev=1530602&r1=1530601&r2=1530602&view=diff
==============================================================================
---
cxf/trunk/rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/saml/StaxToDOMSamlTest.java
(original)
+++
cxf/trunk/rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/saml/StaxToDOMSamlTest.java
Wed Oct 9 13:38:23 2013
@@ -159,11 +159,6 @@ public class StaxToDOMSamlTest extends A
properties.setSamlCallbackHandler(new SAML1CallbackHandler());
properties.setCallbackHandler(new PasswordCallbackHandler());
- properties.setSignatureUser("alice");
-
- Properties cryptoProperties =
- CryptoFactory.getProperties("alice.properties",
this.getClass().getClassLoader());
- properties.setSignatureCryptoProperties(cryptoProperties);
properties.setSignatureKeyIdentifier(
WSSecurityTokenConstants.KeyIdentifier_SecurityTokenDirectReference
);
@@ -205,8 +200,6 @@ public class StaxToDOMSamlTest extends A
outConfig.put(ConfigurationConstants.ACTION,
ConfigurationConstants.SAML_TOKEN_SIGNED);
outConfig.put(ConfigurationConstants.SAML_CALLBACK_REF, new
SAML1CallbackHandler());
outConfig.put(ConfigurationConstants.PW_CALLBACK_REF, new
PasswordCallbackHandler());
- outConfig.put(ConfigurationConstants.SIGNATURE_USER, "alice");
- outConfig.put(ConfigurationConstants.SIG_PROP_FILE,
"alice.properties");
outConfig.put(ConfigurationConstants.SIG_KEY_ID, "DirectReference");
WSS4JStaxOutInterceptor ohandler = new
WSS4JStaxOutInterceptor(outConfig);
@@ -320,11 +313,6 @@ public class StaxToDOMSamlTest extends A
properties.setSamlCallbackHandler(new SAML2CallbackHandler());
properties.setCallbackHandler(new PasswordCallbackHandler());
- properties.setSignatureUser("alice");
-
- Properties cryptoProperties =
- CryptoFactory.getProperties("alice.properties",
this.getClass().getClassLoader());
- properties.setSignatureCryptoProperties(cryptoProperties);
properties.setSignatureKeyIdentifier(
WSSecurityTokenConstants.KeyIdentifier_SecurityTokenDirectReference
);
@@ -367,8 +355,6 @@ public class StaxToDOMSamlTest extends A
outConfig.put(ConfigurationConstants.ACTION,
ConfigurationConstants.SAML_TOKEN_SIGNED);
outConfig.put(ConfigurationConstants.SAML_CALLBACK_REF, new
SAML2CallbackHandler());
outConfig.put(ConfigurationConstants.PW_CALLBACK_REF, new
PasswordCallbackHandler());
- outConfig.put(ConfigurationConstants.SIGNATURE_USER, "alice");
- outConfig.put(ConfigurationConstants.SIG_PROP_FILE,
"alice.properties");
outConfig.put(ConfigurationConstants.SIG_KEY_ID, "DirectReference");
WSS4JStaxOutInterceptor ohandler = new
WSS4JStaxOutInterceptor(outConfig);