Merge pull request #13 from bill-looby/samples-fixes
Fix all issues with the rampart-samples
diff --git a/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java b/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
index eafea0c..a06a0ac 100644
--- a/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
+++ b/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
@@ -273,10 +273,13 @@
boolean encrDataFound = false;
for (WSSecurityEngineResult result : list) {
- ArrayList dataRefURIs = (ArrayList) result.get(WSSecurityEngineResult.TAG_DATA_REF_URIS);
- if (dataRefURIs != null && dataRefURIs.size() != 0) {
- encrDataFound = true;
- }
+ Object resultElement = result.get(WSSecurityEngineResult.TAG_DATA_REF_URIS);
+ if (resultElement instanceof ArrayList) {
+ ArrayList dataRefURIs = (ArrayList) resultElement;
+ if (dataRefURIs != null && dataRefURIs.size() != 0) {
+ encrDataFound = true;
+ }
+ }
}
//TODO check whether the encrptedDataFound is an UsernameToken
if(encrDataFound && !isUsernameTokenPresent(data)) {
diff --git a/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java b/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
index e240c48..8881b7c 100644
--- a/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
+++ b/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
@@ -26,6 +26,7 @@
import org.apache.commons.logging.LogFactory;
import org.apache.rahas.Token;
import org.apache.rahas.TokenStorage;
+import org.apache.rahas.TrustException;
import org.apache.rampart.policy.RampartPolicyData;
import org.apache.rampart.policy.model.KerberosConfig;
import org.apache.rampart.policy.model.RampartConfig;
@@ -243,34 +244,19 @@
Crypto signatureCrypto = RampartUtil.getSignatureCrypto(rpd.getRampartConfig(),
msgCtx.getAxisService().getClassLoader());
- TokenCallbackHandler tokenCallbackHandler = new TokenCallbackHandler(rmd.getTokenStorage(), RampartUtil.getPasswordCB(rmd));
- if(rpd.isSymmetricBinding()) {
- //Here we have to create the CB handler to get the tokens from the
- //token storage
- log.debug("Processing security header using SymetricBinding");
- requestData.setEncodePasswords(true);
- requestData.setCallbackHandler(tokenCallbackHandler);
- requestData.setSigVerCrypto(signatureCrypto);
- requestData.setActor(actorValue);
- requestData.setDecCrypto(RampartUtil.getEncryptionCrypto(rpd.getRampartConfig(), msgCtx.getAxisService().getClassLoader()));
+ TokenCallbackHandler tokenCallbackHandler = new TokenCallbackHandler(rmd.getTokenStorage(), RampartUtil.getPasswordCB(rmd));
+
+ Crypto decCrypto = RampartUtil.getEncryptionCrypto(rpd.getRampartConfig(), msgCtx.getAxisService().getClassLoader());
+ WSHandlerResult result = processSecurityHeaderWithRSA15(engine, rmd, engine.getWssConfig(), actorValue,
+ tokenCallbackHandler, signatureCrypto, decCrypto);
+ results = result.getResults();
- WSHandlerResult result = engine.processSecurityHeader(rmd.getDocument(), requestData);
- results = result.getResults();
- // Removcryption tokens if this is the initiator and if initiator is receiving a message
-
- if (rmd.isInitiator() && (msgCtx.getFLOW() == MessageContext.IN_FLOW ||
- msgCtx.getFLOW() == MessageContext.IN_FAULT_FLOW)) {
- tokenCallbackHandler.removeEncryptedToken();
- }
-
- } else {
-
- log.debug("Processing security header in normal path");
- Crypto decCrypto = RampartUtil.getEncryptionCrypto(rpd.getRampartConfig(), msgCtx.getAxisService().getClassLoader());
- WSHandlerResult result = processSecurityHeaderWithRSA15(engine, rmd, engine.getWssConfig(), actorValue,
- tokenCallbackHandler, signatureCrypto, decCrypto);
- results = result.getResults();
- }
+ if(rpd.isSymmetricBinding()) {
+ if (rmd.isInitiator() && (msgCtx.getFLOW() == MessageContext.IN_FLOW ||
+ msgCtx.getFLOW() == MessageContext.IN_FAULT_FLOW)) {
+ tokenCallbackHandler.removeEncryptedToken();
+ }
+ }
if(dotDebug){
t1 = System.currentTimeMillis();
@@ -408,12 +394,13 @@
throws WSSecurityException {
RequestData data = new RequestData();
- data.setWssConfig(config);
+ data.setEncodePasswords(false);
data.setActor(actor);
data.setDecCrypto(decCrypto);
data.setSigVerCrypto(sigCrypto);
data.setCallbackHandler(cb);
- data.setAllowRSA15KeyTransportAlgorithm(true);
+ data.setAllowRSA15KeyTransportAlgorithm(true); // backward compatibility
+ data.setValidateSamlSubjectConfirmation(false); // backward compatibility
return engine.processSecurityHeader(rmd.getDocument(), data);
}
diff --git a/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java b/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java
index e96be0a..274a933 100644
--- a/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java
+++ b/modules/rampart-core/src/main/java/org/apache/rampart/builder/BindingBuilder.java
@@ -790,6 +790,7 @@
List<WSHandlerResult> results
= (List<WSHandlerResult>)rmd.getMsgContext().getProperty(WSHandlerConstants.RECV_RESULTS);
+
/*
* loop over all results gathered by all handlers in the chain. For each
* handler result get the various actions. After that loop we have all
@@ -799,9 +800,17 @@
for (Object result : results) {
WSHandlerResult wshResult = (WSHandlerResult) result;
- signatureActions.addAll(wshResult.getActionResults().get(WSConstants.SIGN));
- signatureActions.addAll(wshResult.getActionResults().get(WSConstants.ST_SIGNED));
- signatureActions.addAll(wshResult.getActionResults().get(WSConstants.UT_SIGN));
+ if (null != wshResult.getActionResults()) {
+ if (null != wshResult.getActionResults().get(WSConstants.SIGN)) {
+ signatureActions.addAll(wshResult.getActionResults().get(WSConstants.SIGN));
+ }
+ if (null != wshResult.getActionResults().get(WSConstants.ST_SIGNED)) {
+ signatureActions.addAll(wshResult.getActionResults().get(WSConstants.ST_SIGNED));
+ }
+ if (null != wshResult.getActionResults().get(WSConstants.UT_SIGN)) {
+ signatureActions.addAll(wshResult.getActionResults().get(WSConstants.UT_SIGN));
+ }
+ }
}
// prepare a SignatureConfirmation token
diff --git a/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java b/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java
index 3ad8d0a..b36ef39 100644
--- a/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java
+++ b/modules/rampart-core/src/main/java/org/apache/rampart/builder/SymmetricBindingBuilder.java
@@ -720,7 +720,8 @@
// Set the SHA1 value of the encrypted key, this is used when the encrypted
// key is referenced via a key identifier of type EncryptedKeySHA1
- tempTok.setSHA1(getSHA1(encrKey.getEncryptedKeySHA1().getBytes()));
+ //tempTok.setSHA1(getSHA1(encrKey.getEncryptedKeySHA1().getBytes()));
+ tempTok.setSHA1(encrKey.getEncryptedKeySHA1());
rmd.getTokenStorage().add(tempTok);
diff --git a/modules/rampart-core/src/main/java/org/apache/rampart/handler/RampartReceiver.java b/modules/rampart-core/src/main/java/org/apache/rampart/handler/RampartReceiver.java
index f082a01..3b8d0a4 100644
--- a/modules/rampart-core/src/main/java/org/apache/rampart/handler/RampartReceiver.java
+++ b/modules/rampart-core/src/main/java/org/apache/rampart/handler/RampartReceiver.java
@@ -40,8 +40,11 @@
import org.apache.wss4j.dom.handler.WSHandlerResult;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import javax.xml.namespace.QName;
@@ -109,7 +112,7 @@
results = new ArrayList<WSHandlerResult>();
msgContext.setProperty(WSHandlerConstants.RECV_RESULTS, results);
}
- WSHandlerResult rResult = new WSHandlerResult("", wsResult, null);
+ WSHandlerResult rResult = new WSHandlerResult("", wsResult, filterActionResults(wsResult));
results.add(0, rResult);
SOAPHeader header = null;
@@ -141,7 +144,23 @@
return InvocationResponse.CONTINUE;
}
-
+
+ private Map<Integer, List<WSSecurityEngineResult>> filterActionResults( List<WSSecurityEngineResult> results) {
+ Map<Integer, List<WSSecurityEngineResult>> actionResultsMap = new HashMap();
+
+ for (WSSecurityEngineResult result : results) {
+ Integer resultTag = (Integer)result.get(WSSecurityEngineResult.TAG_ACTION);
+ if (null != resultTag) {
+ List<WSSecurityEngineResult> actionResults = actionResultsMap.get(resultTag);
+ if (null == actionResults) {
+ actionResults = new ArrayList<>();
+ actionResultsMap.put(resultTag, actionResults);
+ }
+ actionResults.add(result);
+ }
+ }
+ return actionResultsMap;
+ }
public HandlerDescription getHandlerDesc() {
return this.handlerDesc;
diff --git a/modules/rampart-extensions/jpam-callback-handler/src/main/java/org/apache/rampart/extensions/jpam/JPAMCallbackHandler.java b/modules/rampart-extensions/jpam-callback-handler/src/main/java/org/apache/rampart/extensions/jpam/JPAMCallbackHandler.java
index f42ca7b..268adb7 100644
--- a/modules/rampart-extensions/jpam-callback-handler/src/main/java/org/apache/rampart/extensions/jpam/JPAMCallbackHandler.java
+++ b/modules/rampart-extensions/jpam-callback-handler/src/main/java/org/apache/rampart/extensions/jpam/JPAMCallbackHandler.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import org.apache.ws.security.WSPasswordCallback;
+import org.apache.wss4j.common.ext.WSPasswordCallback;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
@@ -32,7 +32,7 @@
for (int i = 0; i < callbacks.length; i++) {
// When the server side need to authenticate the user
WSPasswordCallback pwcb = (WSPasswordCallback) callbacks[i];
- if (pwcb.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {
+ if (pwcb.getUsage() == WSPasswordCallback.UNKNOWN) {
Pam pam = new Pam();
PamReturnValue ret = pam.authenticate(pwcb.getIdentifer(), pwcb
.getPassword());
diff --git a/modules/rampart-samples/policy/build.xml b/modules/rampart-samples/policy/build.xml
index e9f6dea..ec42927 100644
--- a/modules/rampart-samples/policy/build.xml
+++ b/modules/rampart-samples/policy/build.xml
@@ -202,7 +202,7 @@
<arg value="${service.repos.dir}/sample@{sample.number}"/>
<arg value="-p${server.port}"/>
<classpath refid="runtime.classpath"/>
- <jvmarg line="-Djava.endorsed.dirs=${endorsed.dir} ${vmargs}"/>
+ <jvmarg line="${vmargs}"/>
</java>
</sequential>
@@ -266,7 +266,7 @@
<arg value="${service.repos.dir}/sample@{sample.number}"/>
<arg value="-p${server.port}"/>
<classpath refid="runtime.classpath"/>
- <jvmarg line="-Djava.endorsed.dirs=${endorsed.dir} ${vmargs}"/>
+ <jvmarg line="${vmargs}"/>
</java>
</sequential>
diff --git a/modules/rampart-samples/policy/sample-tomcat/src/org/apache/rampart/tomcat/sample/Client.java b/modules/rampart-samples/policy/sample-tomcat/src/org/apache/rampart/tomcat/sample/Client.java
index 2bc3ecb..0d68d76 100644
--- a/modules/rampart-samples/policy/sample-tomcat/src/org/apache/rampart/tomcat/sample/Client.java
+++ b/modules/rampart-samples/policy/sample-tomcat/src/org/apache/rampart/tomcat/sample/Client.java
@@ -16,6 +16,7 @@
package org.apache.rampart.tomcat.sample;
+import java.io.FileInputStream;
import java.util.Iterator;
import java.util.List;
@@ -23,7 +24,8 @@
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.OMXMLBuilderFactory;
+import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
@@ -61,7 +63,7 @@
}
private static Policy loadPolicy(String xmlPath) throws Exception {
- StAXOMBuilder builder = new StAXOMBuilder(xmlPath);
+ OMXMLParserWrapper builder = OMXMLBuilderFactory.createOMBuilder(new FileInputStream(xmlPath));
OMElement elem = builder.getDocumentElement();
return PolicyEngine.getPolicy(builder.getDocumentElement());
}
diff --git a/modules/rampart-samples/policy/sample-tomcat/src/org/apache/rampart/tomcat/sample/PWCBHandler.java b/modules/rampart-samples/policy/sample-tomcat/src/org/apache/rampart/tomcat/sample/PWCBHandler.java
index 79b71a6..3cf5d47 100644
--- a/modules/rampart-samples/policy/sample-tomcat/src/org/apache/rampart/tomcat/sample/PWCBHandler.java
+++ b/modules/rampart-samples/policy/sample-tomcat/src/org/apache/rampart/tomcat/sample/PWCBHandler.java
@@ -16,7 +16,7 @@
package org.apache.rampart.tomcat.sample;
-import org.apache.ws.security.WSPasswordCallback;
+import org.apache.wss4j.common.ext.WSPasswordCallback;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
@@ -32,7 +32,7 @@
//When the server side need to authenticate the user
WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
- if (pwcb.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {
+ if (pwcb.getUsage() == WSPasswordCallback.UNKNOWN) {
if(pwcb.getIdentifier().equals("alice") && pwcb.getPassword().equals("bobPW")) {
return;
} else {
diff --git a/modules/rampart-samples/policy/sample01/src/org/apache/rampart/samples/policy/sample01/PWCBHandler.java b/modules/rampart-samples/policy/sample01/src/org/apache/rampart/samples/policy/sample01/PWCBHandler.java
index 9840924..f3e6640 100644
--- a/modules/rampart-samples/policy/sample01/src/org/apache/rampart/samples/policy/sample01/PWCBHandler.java
+++ b/modules/rampart-samples/policy/sample01/src/org/apache/rampart/samples/policy/sample01/PWCBHandler.java
@@ -16,7 +16,7 @@
package org.apache.rampart.samples.policy.sample01;
-import org.apache.ws.security.WSPasswordCallback;
+import org.apache.wss4j.common.ext.WSPasswordCallback;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
@@ -32,7 +32,7 @@
//When the server side need to authenticate the user
WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
- if (pwcb.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {
+ if (pwcb.getUsage() == WSPasswordCallback.UNKNOWN) {
if(pwcb.getIdentifier().equals("alice") && pwcb.getPassword().equals("bobPW")) {
return;
} else {
diff --git a/modules/rampart-samples/policy/sample02/src/org/apache/rampart/samples/policy/sample02/PWCBHandler.java b/modules/rampart-samples/policy/sample02/src/org/apache/rampart/samples/policy/sample02/PWCBHandler.java
index 782017f..bca1341 100644
--- a/modules/rampart-samples/policy/sample02/src/org/apache/rampart/samples/policy/sample02/PWCBHandler.java
+++ b/modules/rampart-samples/policy/sample02/src/org/apache/rampart/samples/policy/sample02/PWCBHandler.java
@@ -16,7 +16,7 @@
package org.apache.rampart.samples.policy.sample02;
-import org.apache.ws.security.WSPasswordCallback;
+import org.apache.wss4j.common.ext.WSPasswordCallback;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
diff --git a/modules/rampart-samples/policy/sample03/src/org/apache/rampart/samples/policy/sample03/PWCBHandler.java b/modules/rampart-samples/policy/sample03/src/org/apache/rampart/samples/policy/sample03/PWCBHandler.java
index c6d6d30..7426fa7 100644
--- a/modules/rampart-samples/policy/sample03/src/org/apache/rampart/samples/policy/sample03/PWCBHandler.java
+++ b/modules/rampart-samples/policy/sample03/src/org/apache/rampart/samples/policy/sample03/PWCBHandler.java
@@ -16,7 +16,7 @@
package org.apache.rampart.samples.policy.sample03;
-import org.apache.ws.security.WSPasswordCallback;
+import org.apache.wss4j.common.ext.WSPasswordCallback;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
diff --git a/modules/rampart-samples/policy/sample04/src/org/apache/rampart/samples/policy/sample04/PWCBHandler.java b/modules/rampart-samples/policy/sample04/src/org/apache/rampart/samples/policy/sample04/PWCBHandler.java
index 2820d3d..ee1d439 100644
--- a/modules/rampart-samples/policy/sample04/src/org/apache/rampart/samples/policy/sample04/PWCBHandler.java
+++ b/modules/rampart-samples/policy/sample04/src/org/apache/rampart/samples/policy/sample04/PWCBHandler.java
@@ -16,7 +16,7 @@
package org.apache.rampart.samples.policy.sample04;
-import org.apache.ws.security.WSPasswordCallback;
+import org.apache.wss4j.common.ext.WSPasswordCallback;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
diff --git a/modules/rampart-samples/policy/sample05/src/org/apache/rampart/samples/policy/sample05/Client.java b/modules/rampart-samples/policy/sample05/src/org/apache/rampart/samples/policy/sample05/Client.java
index abaf622..a40f96b 100644
--- a/modules/rampart-samples/policy/sample05/src/org/apache/rampart/samples/policy/sample05/Client.java
+++ b/modules/rampart-samples/policy/sample05/src/org/apache/rampart/samples/policy/sample05/Client.java
@@ -36,7 +36,7 @@
import org.apache.rahas.client.STSClient;
import org.apache.rampart.RampartMessageData;
import org.apache.ws.secpolicy.SP11Constants;
-import org.opensaml.common.xml.SAMLConstants;
+import org.opensaml.saml.common.xml.SAMLConstants;
import java.io.FileInputStream;
import java.net.URL;
diff --git a/modules/rampart-samples/policy/sample05/src/org/apache/rampart/samples/policy/sample05/PWCBHandler.java b/modules/rampart-samples/policy/sample05/src/org/apache/rampart/samples/policy/sample05/PWCBHandler.java
index ecabc8f..349842b 100644
--- a/modules/rampart-samples/policy/sample05/src/org/apache/rampart/samples/policy/sample05/PWCBHandler.java
+++ b/modules/rampart-samples/policy/sample05/src/org/apache/rampart/samples/policy/sample05/PWCBHandler.java
@@ -16,7 +16,7 @@
package org.apache.rampart.samples.policy.sample05;
-import org.apache.ws.security.WSPasswordCallback;
+import org.apache.wss4j.common.ext.WSPasswordCallback;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
diff --git a/modules/rampart-samples/policy/sample06/src/org/apache/rampart/samples/policy/sample06/Client.java b/modules/rampart-samples/policy/sample06/src/org/apache/rampart/samples/policy/sample06/Client.java
index 16b9446..0471f76 100755
--- a/modules/rampart-samples/policy/sample06/src/org/apache/rampart/samples/policy/sample06/Client.java
+++ b/modules/rampart-samples/policy/sample06/src/org/apache/rampart/samples/policy/sample06/Client.java
@@ -34,7 +34,7 @@
import org.apache.rahas.TrustUtil;
import org.apache.rampart.RampartMessageData;
import org.apache.ws.secpolicy.SP11Constants;
-import org.opensaml.common.xml.SAMLConstants;
+import org.opensaml.saml.common.xml.SAMLConstants;
import java.io.FileInputStream;
diff --git a/modules/rampart-samples/policy/sample06/src/org/apache/rampart/samples/policy/sample06/PWCBHandler.java b/modules/rampart-samples/policy/sample06/src/org/apache/rampart/samples/policy/sample06/PWCBHandler.java
index 8a54093..61416b4 100755
--- a/modules/rampart-samples/policy/sample06/src/org/apache/rampart/samples/policy/sample06/PWCBHandler.java
+++ b/modules/rampart-samples/policy/sample06/src/org/apache/rampart/samples/policy/sample06/PWCBHandler.java
@@ -16,7 +16,7 @@
package org.apache.rampart.samples.policy.sample06;
-import org.apache.ws.security.WSPasswordCallback;
+import org.apache.wss4j.common.ext.WSPasswordCallback;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
diff --git a/modules/rampart-samples/policy/sample07/src/org/apache/rampart/samples/policy/sample07/PWCBHandler.java b/modules/rampart-samples/policy/sample07/src/org/apache/rampart/samples/policy/sample07/PWCBHandler.java
index c44e63e..5a58387 100644
--- a/modules/rampart-samples/policy/sample07/src/org/apache/rampart/samples/policy/sample07/PWCBHandler.java
+++ b/modules/rampart-samples/policy/sample07/src/org/apache/rampart/samples/policy/sample07/PWCBHandler.java
@@ -16,7 +16,7 @@
package org.apache.rampart.samples.policy.sample07;
-import org.apache.ws.security.WSPasswordCallback;
+import org.apache.wss4j.common.ext.WSPasswordCallback;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
diff --git a/modules/rampart-samples/policy/sample08/src/org/apache/rampart/samples/policy/sample08/Client.java b/modules/rampart-samples/policy/sample08/src/org/apache/rampart/samples/policy/sample08/Client.java
index e3372cf..c98a001 100644
--- a/modules/rampart-samples/policy/sample08/src/org/apache/rampart/samples/policy/sample08/Client.java
+++ b/modules/rampart-samples/policy/sample08/src/org/apache/rampart/samples/policy/sample08/Client.java
@@ -30,7 +30,7 @@
import org.apache.rahas.TrustUtil;
import org.apache.rahas.client.STSClient;
import org.apache.ws.secpolicy.SP11Constants;
-import org.opensaml.common.xml.SAMLConstants;
+import org.opensaml.saml.common.xml.SAMLConstants;
import java.io.FileInputStream;
import java.net.URL;
diff --git a/modules/rampart-samples/policy/sample08/src/org/apache/rampart/samples/policy/sample08/PWCBHandler.java b/modules/rampart-samples/policy/sample08/src/org/apache/rampart/samples/policy/sample08/PWCBHandler.java
index 4367075..a249527 100644
--- a/modules/rampart-samples/policy/sample08/src/org/apache/rampart/samples/policy/sample08/PWCBHandler.java
+++ b/modules/rampart-samples/policy/sample08/src/org/apache/rampart/samples/policy/sample08/PWCBHandler.java
@@ -16,7 +16,7 @@
package org.apache.rampart.samples.policy.sample08;
-import org.apache.ws.security.WSPasswordCallback;
+import org.apache.wss4j.common.ext.WSPasswordCallback;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
diff --git a/modules/rampart-samples/policy/sample09/src/org/apache/rampart/samples/policy/sample09/PWCBHandler.java b/modules/rampart-samples/policy/sample09/src/org/apache/rampart/samples/policy/sample09/PWCBHandler.java
index 2d62ae1..8a1ef66 100644
--- a/modules/rampart-samples/policy/sample09/src/org/apache/rampart/samples/policy/sample09/PWCBHandler.java
+++ b/modules/rampart-samples/policy/sample09/src/org/apache/rampart/samples/policy/sample09/PWCBHandler.java
@@ -18,7 +18,7 @@
*/
package org.apache.rampart.samples.policy.sample09;
-import org.apache.ws.security.WSPasswordCallback;
+import org.apache.wss4j.common.ext.WSPasswordCallback;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
diff --git a/modules/rampart-tests/test-resources/PWCallback.java b/modules/rampart-tests/test-resources/PWCallback.java
index 3b259a2..fc4f73d 100644
--- a/modules/rampart-tests/test-resources/PWCallback.java
+++ b/modules/rampart-tests/test-resources/PWCallback.java
@@ -17,7 +17,7 @@
package org.apache.axis2.security;
-import org.apache.ws.security.WSPasswordCallback;
+import org.apache.wss4j.common.ext.WSPasswordCallback;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
@@ -114,7 +114,7 @@
*/
- if (pc.getUsage() == WSPasswordCallback.USERNAME_TOKEN_UNKNOWN) {
+ if (pc.getUsage() == WSPasswordCallback.UNKNOWN) {
if(pc.getIdentifier().equals("Ron") && pc.getPassword().equals("noR")) {
diff --git a/modules/rampart-trust/pom.xml b/modules/rampart-trust/pom.xml
index ae0ec58..e3f2dcb 100644
--- a/modules/rampart-trust/pom.xml
+++ b/modules/rampart-trust/pom.xml
@@ -93,7 +93,12 @@
<artifactId>opensaml-soap-impl</artifactId>
</dependency>
<dependency>
- <groupId>org.owasp.esapi</groupId>
+ <groupId>org.owasp.esapi</groupId> <exclusions>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </exclusion>
+ </exclusions>
<artifactId>esapi</artifactId>
<version>2.5.1.0</version>
</dependency>
@@ -101,6 +106,12 @@
<groupId>xalan</groupId>
<artifactId>xalan</artifactId>
<scope>runtime</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
diff --git a/modules/rampart-trust/src/main/java/org/apache/rahas/RahasData.java b/modules/rampart-trust/src/main/java/org/apache/rahas/RahasData.java
index 12fa5eb..ecb7f2a 100644
--- a/modules/rampart-trust/src/main/java/org/apache/rahas/RahasData.java
+++ b/modules/rampart-trust/src/main/java/org/apache/rahas/RahasData.java
@@ -26,7 +26,7 @@
import org.apache.wss4j.dom.engine.WSSecurityEngineResult;
import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.dom.handler.WSHandlerConstants;
-import org.apache.wss4j.dom.handler.WSHandlerResult;;
+import org.apache.wss4j.dom.handler.WSHandlerResult;
import org.apache.wss4j.common.token.SecurityTokenReference;
import org.opensaml.saml.saml1.core.Assertion;
import org.w3c.dom.Document;
diff --git a/modules/rampart-trust/src/main/java/org/apache/rahas/Token.java b/modules/rampart-trust/src/main/java/org/apache/rahas/Token.java
index fa8515c..194268a 100644
--- a/modules/rampart-trust/src/main/java/org/apache/rahas/Token.java
+++ b/modules/rampart-trust/src/main/java/org/apache/rahas/Token.java
@@ -26,6 +26,7 @@
import java.util.Date;
import java.util.Properties;
import java.time.LocalDate;
+import java.time.LocalDateTime;
import java.time.Instant;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
@@ -177,17 +178,15 @@
OMElement createdElem =
lifetimeElem.getFirstChildWithName(new QName(WSConstants.WSU_NS, WSConstants.CREATED_LN));
- LocalDate localDateCreated = LocalDate.parse(createdElem.getText(), DateUtil.getDateTimeFormatter(true));
- ZonedDateTime createdDateTime = localDateCreated.atStartOfDay(ZoneOffset.UTC);
- this.created = Date.from(createdDateTime.toInstant());
+ LocalDateTime localDateCreated = LocalDateTime.parse(createdElem.getText(), DateUtil.getDateTimeFormatter(true));
+ this.created = Date.from(localDateCreated.atZone(ZoneOffset.UTC).toInstant());
OMElement expiresElem =
lifetimeElem.getFirstChildWithName(new QName(WSConstants.WSU_NS, WSConstants.EXPIRES_LN));
- LocalDate localDateExpires = LocalDate.parse(expiresElem.getText(), DateUtil.getDateTimeFormatter(true));
- ZonedDateTime expiresDateTime = localDateExpires.atStartOfDay(ZoneOffset.UTC);
-
- this.expires = Date.from(expiresDateTime.toInstant());
+ LocalDateTime localDateExpires = LocalDateTime.parse(expiresElem.getText(), DateUtil.getDateTimeFormatter(true));
+ this.expires = Date.from(localDateExpires.atZone(ZoneOffset.UTC).toInstant());
+
} catch (OMException e) {
throw new TrustException("lifeTimeProcessingError", new String[]{lifetimeElem.toString()}, e);
} catch (Exception e) {
diff --git a/modules/rampart-trust/src/main/java/org/apache/rahas/impl/SAMLTokenIssuer.java b/modules/rampart-trust/src/main/java/org/apache/rahas/impl/SAMLTokenIssuer.java
index 0ca2e1e..d230601 100644
--- a/modules/rampart-trust/src/main/java/org/apache/rahas/impl/SAMLTokenIssuer.java
+++ b/modules/rampart-trust/src/main/java/org/apache/rahas/impl/SAMLTokenIssuer.java
@@ -102,7 +102,7 @@
// Creation and expiration times
Instant creationTime = Instant.now();
- Instant expirationTime = Instant.ofEpochMilli(creationTime.getEpochSecond() + tokenIssuerConfiguration.getTtl());
+ Instant expirationTime = creationTime.plusMillis(tokenIssuerConfiguration.getTtl());
// Get the document
Document doc = ((Element) env).getOwnerDocument();
diff --git a/modules/rampart-trust/src/main/java/org/apache/rahas/impl/SCTIssuer.java b/modules/rampart-trust/src/main/java/org/apache/rahas/impl/SCTIssuer.java
index 9910585..ddae36f 100644
--- a/modules/rampart-trust/src/main/java/org/apache/rahas/impl/SCTIssuer.java
+++ b/modules/rampart-trust/src/main/java/org/apache/rahas/impl/SCTIssuer.java
@@ -18,6 +18,7 @@
import org.apache.axiom.om.OMElement;
import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.util.UIDGenerator;
import org.apache.axis2.description.Parameter;
import org.apache.rahas.RahasConstants;
import org.apache.rahas.RahasData;
@@ -108,6 +109,9 @@
SecurityContextToken sct =
new SecurityContextToken(this.getWSCVersion(data.getTokenType()), doc);
+
+ // It appears WSS4J no longer includes an Id for SecurityContextToken automatically
+ sct.setID(UIDGenerator.generateUID());
OMElement rstrElem;
if (wstVersion == RahasConstants.VERSION_05_12) {
diff --git a/pom.xml b/pom.xml
index 0cec20e..67c65f9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -601,7 +601,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jcl</artifactId>
- <version>2.20.0</version>
+ <version>1.7.36</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>