This is an automated email from the ASF dual-hosted git repository.
coheigea pushed a commit to branch coheigea/saml-refactor-new
in repository https://gitbox.apache.org/repos/asf/ws-wss4j.git
The following commit(s) were added to refs/heads/coheigea/saml-refactor-new by
this push:
new 8d7b68ff1 Enforce a password is only obtained from a callbackhandler
and not the message context any more
8d7b68ff1 is described below
commit 8d7b68ff1c4226ad3d3ab630c380fa56f2e6c12a
Author: Colm O hEigeartaigh <[email protected]>
AuthorDate: Wed Jun 18 12:07:31 2025 +0100
Enforce a password is only obtained from a callbackhandler and not the
message context any more
---
.../org/apache/wss4j/dom/action/ActionUtils.java | 32 +++++++++++
.../wss4j/dom/action/EncryptionDerivedAction.java | 2 +-
.../wss4j/dom/action/SAMLTokenSignedAction.java | 2 +-
.../apache/wss4j/dom/action/SignatureAction.java | 2 +-
.../wss4j/dom/action/SignatureDerivedAction.java | 2 +-
.../wss4j/dom/action/UsernameTokenAction.java | 2 +-
.../dom/action/UsernameTokenSignedAction.java | 2 +-
.../org/apache/wss4j/dom/handler/WSHandler.java | 47 ---------------
.../org/apache/wss4j/dom/common/CustomHandler.java | 12 ----
.../dom/handler/SignatureConfirmationTest.java | 10 ++--
.../dom/handler/WSHandlerGetPasswordTest.java | 67 ----------------------
.../apache/wss4j/dom/message/PasswordTypeTest.java | 2 +-
.../wss4j/dom/message/SignatureCertTest.java | 4 +-
.../wss4j/dom/message/SignaturePartsTest.java | 2 +
.../apache/wss4j/dom/message/SignatureTest.java | 12 ++--
.../apache/wss4j/dom/message/SignedBSTTest.java | 3 +-
.../wss4j/dom/message/UsernameTokenTest.java | 4 +-
.../wss4j/dom/message/XOPAttachmentTest.java | 4 +-
.../dom/saml/SamlTokenCustomSignatureTest.java | 3 +-
.../apache/wss4j/stax/test/AbstractTestBase.java | 19 +-----
.../apache/wss4j/stax/test/SignatureCRLTest.java | 3 +-
.../stax/test/SignatureCertConstaintsTest.java | 3 +-
.../test/SignatureIssuerCertConstaintsTest.java | 3 +-
23 files changed, 70 insertions(+), 172 deletions(-)
diff --git
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/ActionUtils.java
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/ActionUtils.java
index 393a4bd94..0b900cd92 100644
--- a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/ActionUtils.java
+++ b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/ActionUtils.java
@@ -19,9 +19,13 @@
package org.apache.wss4j.dom.action;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+
import org.apache.wss4j.common.ext.WSPasswordCallback;
import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.dom.WSConstants;
+import org.apache.wss4j.dom.handler.RequestData;
public final class ActionUtils {
@@ -67,4 +71,32 @@ public final class ActionUtils {
return new WSPasswordCallback(username, reason);
}
+ /**
+ * Configure a password callback (WSPasswordCallback object) from a
CallbackHandler instance
+ * @param callbackHandler The CallbackHandler to use
+ * @param pwCb The WSPasswordCallback to supply to the CallbackHandler
+ * @param requestData The RequestData which supplies the message context
+ * @throws WSSecurityException
+ */
+ public static void performPasswordCallback(
+ CallbackHandler callbackHandler,
+ WSPasswordCallback pwCb,
+ RequestData requestData
+ ) throws WSSecurityException {
+
+ if (callbackHandler != null) {
+ Callback[] callbacks = new Callback[1];
+ callbacks[0] = pwCb;
+ //
+ // Call back the application to get the password
+ //
+ try {
+ callbackHandler.handle(callbacks);
+ } catch (Exception e) {
+ throw new
WSSecurityException(WSSecurityException.ErrorCode.FAILURE, e,
+ "empty", new Object[] {"WSHandler: password callback
failed"});
+ }
+ }
+ }
+
}
diff --git
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionDerivedAction.java
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionDerivedAction.java
index ac305d1d8..4e7bfa160 100644
---
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionDerivedAction.java
+++
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionDerivedAction.java
@@ -58,7 +58,7 @@ public class EncryptionDerivedAction extends
AbstractDerivedAction implements Ac
}
WSPasswordCallback pwCb =
ActionUtils.constructPasswordCallback(encryptionToken.getUser(),
WSConstants.DKT_ENCR);
- handler.performPasswordCallback(callbackHandler, pwCb, reqData);
+ ActionUtils.performPasswordCallback(callbackHandler, pwCb, reqData);
WSSecDKEncrypt wsEncrypt = new WSSecDKEncrypt(reqData.getSecHeader());
wsEncrypt.setIdAllocator(reqData.getWssConfig().getIdAllocator());
diff --git
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SAMLTokenSignedAction.java
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SAMLTokenSignedAction.java
index b41111b3a..b8720ef1d 100644
---
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SAMLTokenSignedAction.java
+++
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SAMLTokenSignedAction.java
@@ -98,7 +98,7 @@ public class SAMLTokenSignedAction implements Action {
}
WSPasswordCallback pwCb =
ActionUtils.constructPasswordCallback(signatureToken.getUser(),
WSConstants.ST_SIGNED);
- handler.performPasswordCallback(callbackHandler, pwCb, reqData);
+ ActionUtils.performPasswordCallback(callbackHandler, pwCb, reqData);
wsSign.setUserInfo(signatureToken.getUser(), pwCb.getPassword());
diff --git
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureAction.java
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureAction.java
index bfb24dddd..aab7506c5 100644
---
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureAction.java
+++
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureAction.java
@@ -53,7 +53,7 @@ public class SignatureAction implements Action {
}
WSPasswordCallback pwCb =
ActionUtils.constructPasswordCallback(signatureToken.getUser(),
WSConstants.SIGN);
- handler.performPasswordCallback(callbackHandler, pwCb, reqData);
+ ActionUtils.performPasswordCallback(callbackHandler, pwCb, reqData);
WSSecSignature wsSign = new WSSecSignature(reqData.getSecHeader());
wsSign.setIdAllocator(reqData.getWssConfig().getIdAllocator());
diff --git
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureDerivedAction.java
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureDerivedAction.java
index cae496352..c170b34f9 100644
---
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureDerivedAction.java
+++
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureDerivedAction.java
@@ -59,7 +59,7 @@ public class SignatureDerivedAction extends
AbstractDerivedAction implements Act
}
WSPasswordCallback pwCb =
ActionUtils.constructPasswordCallback(signatureToken.getUser(),
WSConstants.DKT_SIGN);
- handler.performPasswordCallback(callbackHandler, pwCb, reqData);
+ ActionUtils.performPasswordCallback(callbackHandler, pwCb, reqData);
WSSecDKSign wsSign = new WSSecDKSign(reqData.getSecHeader());
wsSign.setIdAllocator(reqData.getWssConfig().getIdAllocator());
diff --git
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/UsernameTokenAction.java
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/UsernameTokenAction.java
index fc90e1b21..39450d709 100644
---
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/UsernameTokenAction.java
+++
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/UsernameTokenAction.java
@@ -39,7 +39,7 @@ public class UsernameTokenAction implements Action {
CallbackHandler callbackHandler = reqData.getCallbackHandler();
WSPasswordCallback pwCb =
ActionUtils.constructPasswordCallback(reqData.getUsername(), WSConstants.UT);
- handler.performPasswordCallback(callbackHandler, pwCb, reqData);
+ ActionUtils.performPasswordCallback(callbackHandler, pwCb,
reqData);
username = pwCb.getIdentifier();
password = pwCb.getPassword();
diff --git
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/UsernameTokenSignedAction.java
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/UsernameTokenSignedAction.java
index dd3174083..138a58d10 100644
---
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/UsernameTokenSignedAction.java
+++
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/UsernameTokenSignedAction.java
@@ -52,7 +52,7 @@ public class UsernameTokenSignedAction implements Action {
CallbackHandler callbackHandler = reqData.getCallbackHandler();
WSPasswordCallback pwCb =
ActionUtils.constructPasswordCallback(reqData.getUsername(),
WSConstants.UT_SIGN);
- handler.performPasswordCallback(callbackHandler, pwCb, reqData);
+ ActionUtils.performPasswordCallback(callbackHandler, pwCb, reqData);
if (reqData.getUsername() == null) {
throw new
WSSecurityException(WSSecurityException.ErrorCode.FAILURE, "noUser");
diff --git
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/WSHandler.java
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/WSHandler.java
index d54a7c9ee..7f01d3bfa 100644
--- a/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/WSHandler.java
+++ b/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/WSHandler.java
@@ -25,7 +25,6 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
-import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import org.apache.wss4j.dom.WSConstants;
@@ -42,7 +41,6 @@ import org.apache.wss4j.common.crypto.CryptoFactory;
import org.apache.wss4j.common.crypto.JasyptPasswordEncryptor;
import org.apache.wss4j.common.crypto.PasswordEncryptor;
import org.apache.wss4j.common.dom.message.WSSecHeader;
-import org.apache.wss4j.common.ext.WSPasswordCallback;
import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.common.util.Loader;
import org.apache.wss4j.common.util.XMLUtils;
@@ -1143,47 +1141,6 @@ public abstract class WSHandler {
return passwordEncryptor;
}
- /**
- * Configure a password callback (WSPasswordCallback object) from a
CallbackHandler instance
- * @param callbackHandler The CallbackHandler to use
- * @param pwCb The WSPasswordCallback to supply to the CallbackHandler
- * @param requestData The RequestData which supplies the message context
- * @throws WSSecurityException
- */
- public void performPasswordCallback(
- CallbackHandler callbackHandler,
- WSPasswordCallback pwCb,
- RequestData requestData
- ) throws WSSecurityException {
-
- if (callbackHandler != null) {
- Callback[] callbacks = new Callback[1];
- callbacks[0] = pwCb;
- //
- // Call back the application to get the password
- //
- try {
- callbackHandler.handle(callbacks);
- } catch (Exception e) {
- throw new
WSSecurityException(WSSecurityException.ErrorCode.FAILURE, e,
- "empty", new Object[] {"WSHandler: password callback
failed"});
- }
- } else {
- //
- // If a callback isn't configured then try to get the password
- // from the message context
- //
- String password = getPassword(requestData.getMsgContext());
- if (password == null) {
- String err = "provided null or empty password";
- throw new
WSSecurityException(WSSecurityException.ErrorCode.FAILURE,
- "empty",
- new Object[] {"WSHandler: application " + err});
- }
- pwCb.setPassword(password);
- }
- }
-
private void splitEncParts(boolean required, String tmpS,
List<WSEncryptionPart> parts, RequestData
reqData)
throws WSSecurityException {
@@ -1427,8 +1384,4 @@ public abstract class WSHandler {
public abstract void setProperty(Object msgContext, String key,
Object value);
-
- public abstract String getPassword(Object msgContext);
-
- public abstract void setPassword(Object msgContext, String password);
}
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomHandler.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomHandler.java
index 39b68ef2d..8023e203e 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomHandler.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomHandler.java
@@ -67,18 +67,6 @@ public class CustomHandler extends WSHandler {
return null;
}
- public void
- setPassword(Object msgContext, String password) {
- }
-
- public String
- getPassword(Object msgContext) {
- if (msgContext instanceof Map<?,?>) {
- return (String)((Map<?,?>)msgContext).get("password");
- }
- return null;
- }
-
public void send(
Document doc,
RequestData reqData,
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/SignatureConfirmationTest.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/SignatureConfirmationTest.java
index 5f64f64b8..959659b9c 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/SignatureConfirmationTest.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/SignatureConfirmationTest.java
@@ -75,7 +75,7 @@ public class SignatureConfirmationTest {
java.util.Map<String, Object> msgContext = new java.util.TreeMap<>();
msgContext.put(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION,
"true");
msgContext.put(WSHandlerConstants.SIG_PROP_FILE, "crypto.properties");
- msgContext.put("password", "security");
+ msgContext.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
reqData.setMsgContext(msgContext);
reqData.setUsername("16c73ab6-b892-458f-abf5-2f875f74882e");
@@ -116,7 +116,7 @@ public class SignatureConfirmationTest {
java.util.Map<String, Object> msgContext = new java.util.TreeMap<>();
msgContext.put(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION,
"false");
msgContext.put(WSHandlerConstants.SIG_PROP_FILE, "crypto.properties");
- msgContext.put("password", "security");
+ msgContext.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
reqData.setMsgContext(msgContext);
reqData.setUsername("16c73ab6-b892-458f-abf5-2f875f74882e");
@@ -155,7 +155,7 @@ public class SignatureConfirmationTest {
java.util.Map<String, Object> msgContext = new java.util.TreeMap<>();
msgContext.put(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION,
"true");
msgContext.put(WSHandlerConstants.SIG_PROP_FILE, "crypto.properties");
- msgContext.put("password", "security");
+ msgContext.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
reqData.setMsgContext(msgContext);
reqData.setUsername("16c73ab6-b892-458f-abf5-2f875f74882e");
@@ -220,7 +220,7 @@ public class SignatureConfirmationTest {
java.util.Map<String, Object> msgContext = new java.util.TreeMap<>();
msgContext.put(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION,
"true");
msgContext.put(WSHandlerConstants.SIG_PROP_FILE, "crypto.properties");
- msgContext.put("password", "security");
+ msgContext.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
reqData.setMsgContext(msgContext);
reqData.setUsername("16c73ab6-b892-458f-abf5-2f875f74882e");
@@ -320,7 +320,7 @@ public class SignatureConfirmationTest {
java.util.Map<String, Object> msgContext = new java.util.TreeMap<>();
msgContext.put(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION,
"true");
msgContext.put(WSHandlerConstants.SIG_PROP_FILE, "crypto.properties");
- msgContext.put("password", "security");
+ msgContext.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
reqData.setMsgContext(msgContext);
reqData.setUsername("16c73ab6-b892-458f-abf5-2f875f74882e");
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/WSHandlerGetPasswordTest.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/WSHandlerGetPasswordTest.java
index 25a9e8b54..d747d1ec9 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/WSHandlerGetPasswordTest.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/handler/WSHandlerGetPasswordTest.java
@@ -23,14 +23,12 @@ import java.util.Collections;
import org.apache.wss4j.common.util.SOAPUtil;
import org.apache.wss4j.dom.WSConstants;
-import org.apache.wss4j.dom.action.ActionUtils;
import org.apache.wss4j.dom.common.CustomHandler;
import org.apache.wss4j.dom.common.UsernamePasswordCallbackHandler;
import org.apache.wss4j.dom.engine.WSSConfig;
import org.junit.jupiter.api.Test;
-import org.apache.wss4j.common.ext.WSPasswordCallback;
import org.apache.wss4j.common.util.XMLUtils;
import org.w3c.dom.Document;
@@ -47,71 +45,6 @@ public class WSHandlerGetPasswordTest {
org.slf4j.LoggerFactory.getLogger(WSHandlerGetPasswordTest.class);
private CallbackHandler callbackHandler = new
UsernamePasswordCallbackHandler();
- /**
- * A unit test for WSHandler.getPassword(...), where the password is
obtained
- * from the Message Context.
- */
- @Test
- public void
- testGetPasswordRequestContextUnit() throws Exception {
-
- final WSSConfig cfg = WSSConfig.getNewInstance();
- final RequestData reqData = new RequestData();
- reqData.setWssConfig(cfg);
- java.util.Map<String, Object> messageContext = new
java.util.TreeMap<>();
- messageContext.put("password", "securityPassword");
- reqData.setMsgContext(messageContext);
-
- WSHandler handler = new CustomHandler();
- CallbackHandler callbackHandler =
- handler.getCallbackHandler("SomeCallbackTag", "SomeCallbackRef",
reqData);
-
- WSPasswordCallback pwCb =
ActionUtils.constructPasswordCallback("alice", WSConstants.UT);
- handler.performPasswordCallback(callbackHandler, pwCb, reqData);
-
- assertTrue("alice".equals(pwCb.getIdentifier()));
- assertTrue("securityPassword".equals(pwCb.getPassword()));
- assertTrue(WSPasswordCallback.USERNAME_TOKEN == pwCb.getUsage());
- }
-
- /**
- * A WSHandler test for WSHandler.getPassword(...), where the password is
obtained
- * from the Message Context.
- */
- @Test
- public void
- testGetPasswordRequestContext() throws Exception {
-
- final WSSConfig cfg = WSSConfig.getNewInstance();
- final RequestData reqData = new RequestData();
- reqData.setWssConfig(cfg);
- reqData.setUsername("alice");
- reqData.setPwType(WSConstants.PASSWORD_TEXT);
- java.util.Map<String, Object> messageContext = new
java.util.TreeMap<>();
- messageContext.put("password", "securityPassword");
- reqData.setMsgContext(messageContext);
-
- final java.util.List<Integer> actions = new java.util.ArrayList<>();
- actions.add(WSConstants.UT);
- Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
- CustomHandler handler = new CustomHandler();
- HandlerAction action = new HandlerAction(WSConstants.UT);
- handler.send(
- doc,
- reqData,
- Collections.singletonList(action),
- true
- );
-
- String outputString =
- XMLUtils.prettyDocumentToString(doc);
- if (LOG.isDebugEnabled()) {
- LOG.debug(outputString);
- }
- assertTrue(outputString.contains("alice"));
- assertTrue(outputString.contains("securityPassword"));
- }
-
/**
* A test for WSHandler.getPassword(...), where the password is obtained
from a
* Callback Handler, which is placed on the Message Context using a
reference.
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/PasswordTypeTest.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/PasswordTypeTest.java
index ee3024a24..86eae1735 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/PasswordTypeTest.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/PasswordTypeTest.java
@@ -167,7 +167,7 @@ public class PasswordTypeTest {
RequestData reqData = new RequestData();
java.util.Map<String, Object> config = new java.util.TreeMap<>();
- config.put("password", "verySecret");
+ config.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
config.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
reqData.setUsername("wernerd");
reqData.setMsgContext(config);
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignatureCertTest.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignatureCertTest.java
index 7d1bd025b..edf622b52 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignatureCertTest.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignatureCertTest.java
@@ -22,7 +22,7 @@ package org.apache.wss4j.dom.message;
import org.apache.wss4j.common.util.SOAPUtil;
import org.apache.wss4j.dom.WSConstants;
import org.apache.wss4j.dom.common.CustomHandler;
-
+import org.apache.wss4j.dom.common.KeystoreCallbackHandler;
import org.apache.wss4j.dom.engine.WSSConfig;
import org.apache.wss4j.dom.engine.WSSecurityEngine;
import org.apache.wss4j.common.dom.engine.WSSecurityEngineResult;
@@ -244,7 +244,7 @@ public class SignatureCertTest {
reqData.setUsername("wss40");
java.util.Map<String, String> config = new java.util.TreeMap<>();
config.put(WSHandlerConstants.SIG_PROP_FILE, "wss40.properties");
- config.put("password", "security");
+ config.put(WSHandlerConstants.PW_CALLBACK_CLASS,
KeystoreCallbackHandler.class.getName());
config.put(WSHandlerConstants.SIG_KEY_ID, "DirectReference");
config.put(WSHandlerConstants.USE_SINGLE_CERTIFICATE, "false");
reqData.setMsgContext(config);
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignaturePartsTest.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignaturePartsTest.java
index 00bacd880..2b52a6ae0 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignaturePartsTest.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignaturePartsTest.java
@@ -26,6 +26,7 @@ import org.apache.wss4j.common.util.SOAPUtil;
import org.apache.wss4j.common.WSDataRef;
import org.apache.wss4j.dom.WSConstants;
import org.apache.wss4j.dom.common.CustomHandler;
+import org.apache.wss4j.dom.common.KeystoreCallbackHandler;
import org.apache.wss4j.dom.common.SAML1CallbackHandler;
import org.apache.wss4j.dom.engine.WSSConfig;
@@ -599,6 +600,7 @@ public class SignaturePartsTest {
config.put(
WSHandlerConstants.SIGNATURE_PARTS, "{}{" + WSConstants.SIG_NS +
"}KeyInfo"
);
+ config.put(WSHandlerConstants.PW_CALLBACK_REF, new
KeystoreCallbackHandler());
reqData.setMsgContext(config);
final Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignatureTest.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignatureTest.java
index 56f95ba4e..e0da72743 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignatureTest.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignatureTest.java
@@ -584,7 +584,7 @@ public class SignatureTest {
reqData.setUsername("16c73ab6-b892-458f-abf5-2f875f74882e");
java.util.Map<String, Object> config = new java.util.TreeMap<>();
config.put(WSHandlerConstants.SIG_PROP_FILE, "crypto.properties");
- config.put("password", "security");
+ config.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
config.put(
WSHandlerConstants.SIG_ALGO,
"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
@@ -798,7 +798,7 @@ public class SignatureTest {
java.util.Map<String, Object> config = new java.util.TreeMap<>();
config.put(WSHandlerConstants.SIG_PROP_FILE, "crypto.properties");
- config.put("password", "security");
+ config.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
config.put(
WSHandlerConstants.SIGNATURE_PARTS, "{}{" + WSConstants.WSU_NS +
"}Timestamp"
);
@@ -841,7 +841,7 @@ public class SignatureTest {
java.util.Map<String, Object> config = new java.util.TreeMap<>();
config.put(WSHandlerConstants.SIG_PROP_FILE, "crypto.properties");
config.put(WSHandlerConstants.ENC_PROP_FILE, "crypto.properties");
- config.put("password", "security");
+ config.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
config.put(
WSHandlerConstants.SIGNATURE_PARTS, "{}{" + WSConstants.WSU_NS +
"}Timestamp"
);
@@ -880,7 +880,7 @@ public class SignatureTest {
java.util.Map<String, Object> config = new java.util.TreeMap<>();
config.put(WSHandlerConstants.SIG_PROP_FILE, "crypto.properties");
config.put(WSHandlerConstants.ENC_PROP_FILE, "crypto.properties");
- config.put("password", "security");
+ config.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
config.put(
WSHandlerConstants.SIGNATURE_PARTS, "{}{" + WSConstants.WSU_NS +
"}Timestamp"
);
@@ -918,7 +918,7 @@ public class SignatureTest {
java.util.Map<String, Object> config = new java.util.TreeMap<>();
config.put(WSHandlerConstants.SIG_PROP_FILE, "crypto.properties");
config.put(WSHandlerConstants.SIG_C14N_ALGO,
WSConstants.C14N_WITH_COMMENTS);
- config.put("password", "security");
+ config.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
reqData.setMsgContext(config);
final Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
@@ -970,7 +970,7 @@ public class SignatureTest {
File propsFile = new File(basedir +
"/src/test/resources/crypto.properties");
config.put(WSHandlerConstants.SIG_PROP_FILE, propsFile.getPath());
- config.put("password", "security");
+ config.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
reqData.setMsgContext(config);
final Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignedBSTTest.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignedBSTTest.java
index a08cf1624..cd262b9c6 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignedBSTTest.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/SignedBSTTest.java
@@ -33,7 +33,7 @@ import org.apache.wss4j.common.util.SOAPUtil;
import org.apache.wss4j.common.util.XMLUtils;
import org.apache.wss4j.dom.WSConstants;
import org.apache.wss4j.dom.common.CustomHandler;
-
+import org.apache.wss4j.dom.common.KeystoreCallbackHandler;
import org.apache.wss4j.dom.engine.WSSConfig;
import org.apache.wss4j.dom.engine.WSSecurityEngine;
import org.apache.wss4j.dom.handler.HandlerAction;
@@ -136,6 +136,7 @@ public class SignedBSTTest {
WSHandlerConstants.SIGNATURE_PARTS,
"{}{" + WSConstants.WSSE_NS + "}BinarySecurityToken"
);
+ config.put(WSHandlerConstants.PW_CALLBACK_REF, new
KeystoreCallbackHandler());
reqData.setMsgContext(config);
final Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/UsernameTokenTest.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/UsernameTokenTest.java
index 7d19d0904..2b2578ec2 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/UsernameTokenTest.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/UsernameTokenTest.java
@@ -814,8 +814,8 @@ public class UsernameTokenTest implements CallbackHandler {
RequestData reqData = new RequestData();
java.util.Map<String, Object> config = new java.util.TreeMap<>();
- config.put("password", "verySecret");
config.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
+ config.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
reqData.setUsername("wernerd");
reqData.setMsgContext(config);
@@ -1109,10 +1109,10 @@ public class UsernameTokenTest implements
CallbackHandler {
RequestData reqData = new RequestData();
java.util.Map<String, Object> config = new java.util.TreeMap<>();
- config.put("password", "verySecret");
config.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
config.put(WSHandlerConstants.ADD_USERNAMETOKEN_NONCE, "true");
config.put(WSHandlerConstants.ADD_USERNAMETOKEN_CREATED, "true");
+ config.put(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
reqData.setUsername("wernerd");
reqData.setMsgContext(config);
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/XOPAttachmentTest.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/XOPAttachmentTest.java
index d46fc1fe8..0a403211f 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/XOPAttachmentTest.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/message/XOPAttachmentTest.java
@@ -601,8 +601,8 @@ public class XOPAttachmentTest {
config.put(WSHandlerConstants.SIG_PROP_FILE, "crypto.properties");
config.put(WSHandlerConstants.ENC_PROP_FILE, "crypto.properties");
config.put(WSHandlerConstants.SIG_KEY_ID, "DirectReference");
- config.put("password", "security");
config.put(WSHandlerConstants.STORE_BYTES_IN_ATTACHMENT, "true");
+ config.put(WSHandlerConstants.PW_CALLBACK_REF, new
KeystoreCallbackHandler());
reqData.setMsgContext(config);
final Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
@@ -651,8 +651,8 @@ public class XOPAttachmentTest {
config.put(WSHandlerConstants.SIG_PROP_FILE, "crypto.properties");
config.put(WSHandlerConstants.ENC_PROP_FILE, "crypto.properties");
config.put(WSHandlerConstants.SIG_KEY_ID, "DirectReference");
- config.put("password", "security");
config.put(WSHandlerConstants.STORE_BYTES_IN_ATTACHMENT, "true");
+ config.put(WSHandlerConstants.PW_CALLBACK_REF, new
KeystoreCallbackHandler());
reqData.setMsgContext(config);
final Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
diff --git
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/saml/SamlTokenCustomSignatureTest.java
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/saml/SamlTokenCustomSignatureTest.java
index eff9fa062..d5c1c916e 100644
---
a/ws-security-dom/src/test/java/org/apache/wss4j/dom/saml/SamlTokenCustomSignatureTest.java
+++
b/ws-security-dom/src/test/java/org/apache/wss4j/dom/saml/SamlTokenCustomSignatureTest.java
@@ -35,6 +35,7 @@ import org.apache.wss4j.common.util.SOAPUtil;
import org.apache.wss4j.common.util.XMLUtils;
import org.apache.wss4j.dom.WSConstants;
import org.apache.wss4j.dom.common.CustomHandler;
+import org.apache.wss4j.dom.common.KeystoreCallbackHandler;
import org.apache.wss4j.dom.common.SAML1CallbackHandler;
import org.apache.wss4j.dom.engine.WSSConfig;
@@ -119,13 +120,13 @@ public class SamlTokenCustomSignatureTest {
Map<String, Object> config = new TreeMap<>();
config.put(WSHandlerConstants.SIG_PROP_FILE, "crypto.properties");
- config.put("password", "security");
config.put(WSHandlerConstants.SIG_KEY_ID, "DirectReference");
config.put(
WSHandlerConstants.SIGNATURE_PARTS,
"{Element}{urn:oasis:names:tc:SAML:1.0:assertion}Assertion"
);
config.put(WSHandlerConstants.SAML_CALLBACK_REF, callbackHandler);
+ config.put(WSHandlerConstants.PW_CALLBACK_REF, new
KeystoreCallbackHandler());
reqData.setMsgContext(config);
final Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
diff --git
a/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/AbstractTestBase.java
b/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/AbstractTestBase.java
index eaa9706fc..3a77de274 100644
---
a/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/AbstractTestBase.java
+++
b/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/AbstractTestBase.java
@@ -56,7 +56,6 @@ import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.common.util.SOAPUtil;
import org.apache.wss4j.common.util.XMLUtils;
import org.apache.wss4j.dom.WSConstants;
-
import org.apache.wss4j.dom.engine.WSSConfig;
import org.apache.wss4j.dom.engine.WSSecurityEngine;
import org.apache.wss4j.dom.handler.HandlerAction;
@@ -191,7 +190,7 @@ public abstract class AbstractTestBase {
sigProperties.setProperty("org.apache.wss4j.crypto.merlin.keystore.file",
"transmitter.jks");
sigProperties.setProperty("org.apache.wss4j.crypto.merlin.keystore.password",
"default");
//sigProperties.setProperty("org.apache.wss4j.crypto.merlin.keystore.alias",
"transmitter");
- wss4JHandler.setPassword(messageContext, "default");
+ messageContext.put(WSHandlerConstants.PW_CALLBACK_REF, new
WSS4JCallbackHandlerImpl());
messageContext.put(WSHandlerConstants.SIG_PROP_REF_ID, "" +
sigProperties.hashCode());
messageContext.put("" + sigProperties.hashCode(), sigProperties);
@@ -200,7 +199,7 @@ public abstract class AbstractTestBase {
encProperties.setProperty("org.apache.wss4j.crypto.merlin.keystore.file",
"transmitter.jks");
encProperties.setProperty("org.apache.wss4j.crypto.merlin.keystore.password",
"default");
//sigProperties.setProperty("org.apache.wss4j.crypto.merlin.keystore.alias",
"transmitter");
- wss4JHandler.setPassword(messageContext, "default");
+ messageContext.put(WSHandlerConstants.PW_CALLBACK_REF, new
WSS4JCallbackHandlerImpl());
messageContext.put(WSHandlerConstants.ENCRYPTION_USER, "receiver");
messageContext.put(WSHandlerConstants.ENC_PROP_REF_ID, "" +
encProperties.hashCode());
messageContext.put("" + encProperties.hashCode(), encProperties);
@@ -213,9 +212,6 @@ public abstract class AbstractTestBase {
RequestData requestData = new RequestData();
requestData.setMsgContext(messageContext);
- if (messageContext.get(WSHandlerConstants.PW_CALLBACK_REF) == null) {
- requestData.setCallbackHandler(new WSS4JCallbackHandlerImpl());
- }
requestData.setWssConfig(WSSConfig.getNewInstance());
wss4JHandler.doSender(messageContext, requestData, true);
@@ -607,17 +603,6 @@ public abstract class AbstractTestBase {
((Map<String, Object>) msgContext).put(key, value);
}
- @SuppressWarnings("unchecked")
- @Override
- public String getPassword(Object msgContext) {
- return (String) ((Map<String, Object>) msgContext).get("password");
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public void setPassword(Object msgContext, String password) {
- ((Map<String, Object>) msgContext).put("password", password);
- }
}
protected class TestSecurityEventListener implements SecurityEventListener
{
diff --git
a/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureCRLTest.java
b/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureCRLTest.java
index 1dc007ef0..04347c762 100644
---
a/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureCRLTest.java
+++
b/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureCRLTest.java
@@ -32,6 +32,7 @@ import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.wss4j.common.ext.WSSecurityException;
+import org.apache.wss4j.dom.common.KeystoreCallbackHandler;
import org.apache.wss4j.dom.handler.RequestData;
import org.apache.wss4j.dom.handler.WSHandlerConstants;
import org.apache.wss4j.stax.ext.WSSConstants;
@@ -149,7 +150,7 @@ public class SignatureCRLTest extends AbstractTestBase {
sigProperties.setProperty("org.apache.wss4j.crypto.merlin.keystore.password",
"security");
sigProperties.setProperty("org.apache.wss4j.crypto.merlin.keystore.alias",
"wss40rev");
sigProperties.setProperty("org.apache.wss4j.crypto.merlin.x509crl.file",
"keys/wss40CACRL.pem");
- wss4JHandler.setPassword(messageContext, "security");
+ messageContext.put(WSHandlerConstants.PW_CALLBACK_REF, new
KeystoreCallbackHandler());
messageContext.put(WSHandlerConstants.SIG_PROP_REF_ID, "" +
sigProperties.hashCode());
messageContext.put("" + sigProperties.hashCode(), sigProperties);
diff --git
a/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureCertConstaintsTest.java
b/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureCertConstaintsTest.java
index 8c5705674..252be73e6 100644
---
a/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureCertConstaintsTest.java
+++
b/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureCertConstaintsTest.java
@@ -34,6 +34,7 @@ import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.wss4j.common.ext.WSSecurityException;
+import org.apache.wss4j.dom.common.KeystoreCallbackHandler;
import org.apache.wss4j.dom.handler.RequestData;
import org.apache.wss4j.dom.handler.WSHandlerConstants;
import org.apache.wss4j.stax.ext.WSSConstants;
@@ -184,8 +185,8 @@ public class SignatureCertConstaintsTest extends
AbstractTestBase {
sigProperties.setProperty("org.apache.wss4j.crypto.merlin.keystore.file",
"keys/wss40.jks");
sigProperties.setProperty("org.apache.wss4j.crypto.merlin.keystore.password",
"security");
sigProperties.setProperty("org.apache.wss4j.crypto.merlin.keystore.alias",
"wss40");
- wss4JHandler.setPassword(messageContext, "security");
messageContext.put(WSHandlerConstants.SIG_PROP_REF_ID, "" +
sigProperties.hashCode());
+ messageContext.put(WSHandlerConstants.PW_CALLBACK_REF, new
KeystoreCallbackHandler());
messageContext.put("" + sigProperties.hashCode(), sigProperties);
Enumeration<?> enumeration = properties.propertyNames();
diff --git
a/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureIssuerCertConstaintsTest.java
b/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureIssuerCertConstaintsTest.java
index 5392e9ce0..b082fce5f 100644
---
a/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureIssuerCertConstaintsTest.java
+++
b/ws-security-stax/src/test/java/org/apache/wss4j/stax/test/SignatureIssuerCertConstaintsTest.java
@@ -34,6 +34,7 @@ import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.wss4j.common.ext.WSSecurityException;
+import org.apache.wss4j.dom.common.KeystoreCallbackHandler;
import org.apache.wss4j.dom.handler.RequestData;
import org.apache.wss4j.dom.handler.WSHandlerConstants;
import org.apache.wss4j.stax.ext.WSSConstants;
@@ -184,7 +185,7 @@ public class SignatureIssuerCertConstaintsTest extends
AbstractTestBase {
sigProperties.setProperty("org.apache.wss4j.crypto.merlin.keystore.file",
"keys/wss40.jks");
sigProperties.setProperty("org.apache.wss4j.crypto.merlin.keystore.password",
"security");
sigProperties.setProperty("org.apache.wss4j.crypto.merlin.keystore.alias",
"wss40");
- wss4JHandler.setPassword(messageContext, "security");
+ messageContext.put(WSHandlerConstants.PW_CALLBACK_REF, new
KeystoreCallbackHandler());
messageContext.put(WSHandlerConstants.SIG_PROP_REF_ID, "" +
sigProperties.hashCode());
messageContext.put("" + sigProperties.hashCode(), sigProperties);