You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by co...@apache.org on 2025/06/19 08:50:28 UTC
(ws-wss4j) branch coheigea/saml-refactor-new updated (ba0fd4fee -> 655cbccc9)
This is an automated email from the ASF dual-hosted git repository.
coheigea pushed a change to branch coheigea/saml-refactor-new
in repository https://gitbox.apache.org/repos/asf/ws-wss4j.git
from ba0fd4fee Adding SAML module to build
new 22c76a46c Removing SAML Signature crypto loading from action
new 14980fc13 Removing SAML CallbackHandler from ST Signed action
new 655cbccc9 Completed removing WSHandler from actions
The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../java/org/apache/wss4j/dom/action/Action.java | 2 -
.../apache/wss4j/dom/action/CustomTokenAction.java | 3 +-
.../apache/wss4j/dom/action/EncryptionAction.java | 3 +-
.../wss4j/dom/action/EncryptionDerivedAction.java | 3 +-
.../wss4j/dom/action/SAMLTokenSignedAction.java | 36 ++----------------
.../wss4j/dom/action/SAMLTokenUnsignedAction.java | 11 +-----
.../apache/wss4j/dom/action/SignatureAction.java | 3 +-
.../dom/action/SignatureConfirmationAction.java | 3 +-
.../wss4j/dom/action/SignatureDerivedAction.java | 3 +-
.../apache/wss4j/dom/action/TimestampAction.java | 3 +-
.../wss4j/dom/action/UsernameTokenAction.java | 3 +-
.../dom/action/UsernameTokenSignedAction.java | 3 +-
.../org/apache/wss4j/dom/handler/RequestData.java | 19 ++++++++++
.../org/apache/wss4j/dom/handler/WSHandler.java | 44 +++++++++++++++++++---
.../org/apache/wss4j/dom/common/CustomAction.java | 2 -
15 files changed, 73 insertions(+), 68 deletions(-)
(ws-wss4j) 03/03: Completed removing WSHandler from actions
Posted by co...@apache.org.
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
commit 655cbccc99fb6f2e3f96d880fc74f234064c8b1f
Author: Colm O hEigeartaigh <co...@apache.org>
AuthorDate: Thu Jun 19 09:50:11 2025 +0100
Completed removing WSHandler from actions
---
.../src/main/java/org/apache/wss4j/dom/action/Action.java | 2 --
.../org/apache/wss4j/dom/action/CustomTokenAction.java | 3 +--
.../java/org/apache/wss4j/dom/action/EncryptionAction.java | 3 +--
.../apache/wss4j/dom/action/EncryptionDerivedAction.java | 3 +--
.../org/apache/wss4j/dom/action/SAMLTokenSignedAction.java | 3 +--
.../apache/wss4j/dom/action/SAMLTokenUnsignedAction.java | 11 ++---------
.../java/org/apache/wss4j/dom/action/SignatureAction.java | 3 +--
.../wss4j/dom/action/SignatureConfirmationAction.java | 3 +--
.../apache/wss4j/dom/action/SignatureDerivedAction.java | 3 +--
.../java/org/apache/wss4j/dom/action/TimestampAction.java | 3 +--
.../org/apache/wss4j/dom/action/UsernameTokenAction.java | 3 +--
.../apache/wss4j/dom/action/UsernameTokenSignedAction.java | 3 +--
.../main/java/org/apache/wss4j/dom/handler/WSHandler.java | 14 ++++++++++++--
.../java/org/apache/wss4j/dom/common/CustomAction.java | 2 --
14 files changed, 24 insertions(+), 35 deletions(-)
diff --git a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/Action.java b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/Action.java
index 605129d6c..488c0cce8 100644
--- a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/Action.java
+++ b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/Action.java
@@ -22,7 +22,6 @@ package org.apache.wss4j.dom.action;
import org.apache.wss4j.common.SecurityActionToken;
import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.dom.handler.RequestData;
-import org.apache.wss4j.dom.handler.WSHandler;
/**
* Interface for all actions
@@ -30,7 +29,6 @@ import org.apache.wss4j.dom.handler.WSHandler;
public interface Action {
void execute(
- WSHandler handler,
SecurityActionToken actionToken,
RequestData reqData
) throws WSSecurityException;
diff --git a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/CustomTokenAction.java b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/CustomTokenAction.java
index e99539b53..0551d9079 100644
--- a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/CustomTokenAction.java
+++ b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/CustomTokenAction.java
@@ -23,7 +23,6 @@ import org.apache.wss4j.common.SecurityActionToken;
import org.apache.wss4j.common.ext.WSPasswordCallback;
import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.dom.handler.RequestData;
-import org.apache.wss4j.dom.handler.WSHandler;
import org.w3c.dom.Element;
import javax.security.auth.callback.Callback;
@@ -31,7 +30,7 @@ import javax.security.auth.callback.CallbackHandler;
public class CustomTokenAction implements Action {
- public void execute(WSHandler handler, SecurityActionToken actionToken, RequestData reqData)
+ public void execute(SecurityActionToken actionToken, RequestData reqData)
throws WSSecurityException {
CallbackHandler callbackHandler = reqData.getCallbackHandler();
if (callbackHandler == null) {
diff --git a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionAction.java b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionAction.java
index 0c09795c2..8179dde15 100644
--- a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionAction.java
+++ b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/EncryptionAction.java
@@ -34,12 +34,11 @@ import org.apache.wss4j.common.ext.WSPasswordCallback;
import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.common.util.KeyUtils;
import org.apache.wss4j.dom.handler.RequestData;
-import org.apache.wss4j.dom.handler.WSHandler;
import org.apache.wss4j.dom.handler.WSHandlerConstants;
import org.apache.wss4j.dom.message.WSSecEncrypt;
public class EncryptionAction implements Action {
- public void execute(WSHandler handler, SecurityActionToken actionToken, RequestData reqData)
+ public void execute(SecurityActionToken actionToken, RequestData reqData)
throws WSSecurityException {
WSSecEncrypt wsEncrypt = new WSSecEncrypt(reqData.getSecHeader());
wsEncrypt.setIdAllocator(reqData.getWssConfig().getIdAllocator());
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 4e7bfa160..4ce59bd7c 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
@@ -36,7 +36,6 @@ import org.apache.wss4j.common.util.KeyUtils;
import org.apache.wss4j.common.util.XMLUtils;
import org.apache.wss4j.dom.WSConstants;
import org.apache.wss4j.dom.handler.RequestData;
-import org.apache.wss4j.dom.handler.WSHandler;
import org.apache.wss4j.dom.message.WSSecDKEncrypt;
import org.apache.wss4j.dom.util.WSSecurityUtil;
import org.w3c.dom.Document;
@@ -45,7 +44,7 @@ import org.w3c.dom.Node;
public class EncryptionDerivedAction extends AbstractDerivedAction implements Action {
- public void execute(WSHandler handler, SecurityActionToken actionToken, RequestData reqData)
+ public void execute(SecurityActionToken actionToken, RequestData reqData)
throws WSSecurityException {
CallbackHandler callbackHandler = reqData.getCallbackHandler();
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 2845d9c91..379ba538c 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
@@ -30,12 +30,11 @@ import org.apache.wss4j.common.saml.SAMLCallback;
import org.apache.wss4j.common.saml.SAMLUtil;
import org.apache.wss4j.dom.WSConstants;
import org.apache.wss4j.dom.handler.RequestData;
-import org.apache.wss4j.dom.handler.WSHandler;
import org.apache.wss4j.dom.saml.WSSecSignatureSAML;
public class SAMLTokenSignedAction implements Action {
- public void execute(WSHandler handler, SecurityActionToken actionToken, RequestData reqData)
+ public void execute(SecurityActionToken actionToken, RequestData reqData)
throws WSSecurityException {
CallbackHandler samlCallbackHandler = reqData.getSamlCallbackHandler();
diff --git a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SAMLTokenUnsignedAction.java b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SAMLTokenUnsignedAction.java
index a40a4c340..9c26d4743 100644
--- a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SAMLTokenUnsignedAction.java
+++ b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SAMLTokenUnsignedAction.java
@@ -21,31 +21,24 @@ package org.apache.wss4j.dom.action;
import javax.security.auth.callback.CallbackHandler;
-import org.apache.wss4j.common.ConfigurationConstants;
import org.apache.wss4j.common.SecurityActionToken;
import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.common.saml.SamlAssertionWrapper;
import org.apache.wss4j.common.saml.SAMLCallback;
import org.apache.wss4j.common.saml.SAMLUtil;
import org.apache.wss4j.dom.handler.RequestData;
-import org.apache.wss4j.dom.handler.WSHandler;
import org.apache.wss4j.dom.message.WSSecSAMLToken;
public class SAMLTokenUnsignedAction implements Action {
- public void execute(WSHandler handler, SecurityActionToken actionToken, RequestData reqData)
+ public void execute(SecurityActionToken actionToken, RequestData reqData)
throws WSSecurityException {
WSSecSAMLToken builder = new WSSecSAMLToken(reqData.getSecHeader());
builder.setIdAllocator(reqData.getWssConfig().getIdAllocator());
builder.setWsDocInfo(reqData.getWsDocInfo());
builder.setExpandXopInclude(reqData.isExpandXopInclude());
- CallbackHandler samlCallbackHandler =
- handler.getCallbackHandler(
- ConfigurationConstants.SAML_CALLBACK_CLASS,
- ConfigurationConstants.SAML_CALLBACK_REF,
- reqData
- );
+ CallbackHandler samlCallbackHandler = reqData.getSamlCallbackHandler();
if (samlCallbackHandler == null) {
throw new WSSecurityException(
WSSecurityException.ErrorCode.FAILURE,
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 aab7506c5..5bffc2fc2 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
@@ -31,7 +31,6 @@ 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;
-import org.apache.wss4j.dom.handler.WSHandler;
import org.apache.wss4j.dom.message.WSSecSignature;
import org.apache.wss4j.dom.util.WSSecurityUtil;
import org.w3c.dom.Document;
@@ -40,7 +39,7 @@ import org.w3c.dom.Node;
public class SignatureAction implements Action {
- public void execute(WSHandler handler, SecurityActionToken actionToken, RequestData reqData)
+ public void execute(SecurityActionToken actionToken, RequestData reqData)
throws WSSecurityException {
CallbackHandler callbackHandler = reqData.getCallbackHandler();
diff --git a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureConfirmationAction.java b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureConfirmationAction.java
index 66fd8e011..2647f7c9b 100644
--- a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureConfirmationAction.java
+++ b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/SignatureConfirmationAction.java
@@ -26,7 +26,6 @@ import org.apache.wss4j.common.SignatureActionToken;
import org.apache.wss4j.common.WSEncryptionPart;
import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.dom.handler.RequestData;
-import org.apache.wss4j.dom.handler.WSHandler;
import org.apache.wss4j.dom.handler.WSHandlerConstants;
import org.apache.wss4j.dom.handler.WSHandlerResult;
import org.apache.wss4j.dom.message.WSSecSignatureConfirmation;
@@ -38,7 +37,7 @@ public class SignatureConfirmationAction implements Action {
org.slf4j.LoggerFactory.getLogger(SignatureConfirmationAction.class);
@SuppressWarnings("unchecked")
- public void execute(WSHandler handler, SecurityActionToken actionToken, RequestData reqData)
+ public void execute(SecurityActionToken actionToken, RequestData reqData)
throws WSSecurityException {
LOG.debug("Perform Signature confirmation");
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 c170b34f9..e905ec65a 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
@@ -37,7 +37,6 @@ import org.apache.wss4j.common.util.KeyUtils;
import org.apache.wss4j.common.util.XMLUtils;
import org.apache.wss4j.dom.WSConstants;
import org.apache.wss4j.dom.handler.RequestData;
-import org.apache.wss4j.dom.handler.WSHandler;
import org.apache.wss4j.dom.message.WSSecDKSign;
import org.apache.wss4j.dom.util.WSSecurityUtil;
import org.w3c.dom.Document;
@@ -46,7 +45,7 @@ import org.w3c.dom.Node;
public class SignatureDerivedAction extends AbstractDerivedAction implements Action {
- public void execute(WSHandler handler, SecurityActionToken actionToken, RequestData reqData)
+ public void execute(SecurityActionToken actionToken, RequestData reqData)
throws WSSecurityException {
CallbackHandler callbackHandler = reqData.getCallbackHandler();
diff --git a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/TimestampAction.java b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/TimestampAction.java
index da9321657..338fef35b 100644
--- a/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/TimestampAction.java
+++ b/ws-security-dom/src/main/java/org/apache/wss4j/dom/action/TimestampAction.java
@@ -22,12 +22,11 @@ package org.apache.wss4j.dom.action;
import org.apache.wss4j.common.SecurityActionToken;
import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.dom.handler.RequestData;
-import org.apache.wss4j.dom.handler.WSHandler;
import org.apache.wss4j.dom.message.WSSecTimestamp;
public class TimestampAction implements Action {
- public void execute(WSHandler handler, SecurityActionToken actionToken, RequestData reqData)
+ public void execute(SecurityActionToken actionToken, RequestData reqData)
throws WSSecurityException {
//
// add the Timestamp to the SOAP Envelope
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 39450d709..934e4c92c 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
@@ -26,12 +26,11 @@ 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;
-import org.apache.wss4j.dom.handler.WSHandler;
import org.apache.wss4j.dom.message.WSSecUsernameToken;
public class UsernameTokenAction implements Action {
- public void execute(WSHandler handler, SecurityActionToken actionToken, RequestData reqData)
+ public void execute(SecurityActionToken actionToken, RequestData reqData)
throws WSSecurityException {
String username = reqData.getUsername();
String password = null;
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 138a58d10..0f4ae3367 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
@@ -33,7 +33,6 @@ import org.apache.wss4j.common.ext.WSPasswordCallback;
import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.common.util.UsernameTokenUtil;
import org.apache.wss4j.dom.handler.RequestData;
-import org.apache.wss4j.dom.handler.WSHandler;
import org.apache.wss4j.dom.message.WSSecUsernameToken;
import org.apache.wss4j.dom.message.WSSecSignature;
import org.apache.wss4j.dom.util.WSSecurityUtil;
@@ -47,7 +46,7 @@ import org.w3c.dom.Document;
*/
public class UsernameTokenSignedAction implements Action {
- public void execute(WSHandler handler, SecurityActionToken actionToken, RequestData reqData)
+ public void execute(SecurityActionToken actionToken, RequestData reqData)
throws WSSecurityException {
CallbackHandler callbackHandler = reqData.getCallbackHandler();
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 9c441785b..c81f5d6b6 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
@@ -157,6 +157,16 @@ public abstract class WSHandler {
}
} else if (actionToDo.getAction() == WSConstants.ST_SIGNED) {
configureSTSignedAction(reqData, actionToDo);
+ } else if (actionToDo.getAction() == WSConstants.ST_UNSIGNED) {
+ if (reqData.getSamlCallbackHandler() == null) {
+ CallbackHandler samlCallbackHandler =
+ getCallbackHandler(
+ WSHandlerConstants.SAML_CALLBACK_CLASS,
+ WSHandlerConstants.SAML_CALLBACK_REF,
+ reqData
+ );
+ reqData.setSamlCallbackHandler(samlCallbackHandler);
+ }
} else if ((actionToDo.getAction() == WSConstants.ENCR
|| actionToDo.getAction() == WSConstants.DKT_ENCR)
&& actionToDo.getActionToken() == null) {
@@ -197,7 +207,7 @@ public abstract class WSHandler {
String done =
(String)reqData.getMsgContext().get(WSHandlerConstants.SIG_CONF_DONE);
if (done == null) {
- wssConfig.getAction(WSConstants.SC).execute(this, null, reqData);
+ wssConfig.getAction(WSConstants.SC).execute(null, reqData);
}
}
@@ -237,7 +247,7 @@ public abstract class WSHandler {
if (WSConstants.NO_SECURITY != actionToDo.getAction()) {
wssConfig.getAction(actionToDo.getAction()).execute(
- this, actionToDo.getActionToken(), reqData);
+ actionToDo.getActionToken(), reqData);
}
}
diff --git a/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomAction.java b/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomAction.java
index 5949753d1..fac9d212a 100644
--- a/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomAction.java
+++ b/ws-security-dom/src/test/java/org/apache/wss4j/dom/common/CustomAction.java
@@ -25,7 +25,6 @@ import java.util.Map;
import org.apache.wss4j.common.SecurityActionToken;
import org.apache.wss4j.common.ext.WSSecurityException;
-import org.apache.wss4j.dom.handler.WSHandler;
import org.apache.wss4j.dom.handler.RequestData;
/**
@@ -35,7 +34,6 @@ public class CustomAction implements Action {
public void
execute(
- WSHandler handler,
SecurityActionToken action,
RequestData reqData
) throws WSSecurityException {
(ws-wss4j) 02/03: Removing SAML CallbackHandler from ST Signed action
Posted by co...@apache.org.
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
commit 14980fc13c330ca67f14121bb498de334d2691fc
Author: Colm O hEigeartaigh <co...@apache.org>
AuthorDate: Thu Jun 19 09:41:15 2025 +0100
Removing SAML CallbackHandler from ST Signed action
---
.../wss4j/dom/action/SAMLTokenSignedAction.java | 8 +----
.../org/apache/wss4j/dom/handler/RequestData.java | 19 ++++++++++
.../org/apache/wss4j/dom/handler/WSHandler.java | 40 +++++++++++++++-------
3 files changed, 47 insertions(+), 20 deletions(-)
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 0e9ae6ef5..2845d9c91 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
@@ -31,7 +31,6 @@ import org.apache.wss4j.common.saml.SAMLUtil;
import org.apache.wss4j.dom.WSConstants;
import org.apache.wss4j.dom.handler.RequestData;
import org.apache.wss4j.dom.handler.WSHandler;
-import org.apache.wss4j.dom.handler.WSHandlerConstants;
import org.apache.wss4j.dom.saml.WSSecSignatureSAML;
public class SAMLTokenSignedAction implements Action {
@@ -39,12 +38,7 @@ public class SAMLTokenSignedAction implements Action {
public void execute(WSHandler handler, SecurityActionToken actionToken, RequestData reqData)
throws WSSecurityException {
- CallbackHandler samlCallbackHandler =
- handler.getCallbackHandler(
- WSHandlerConstants.SAML_CALLBACK_CLASS,
- WSHandlerConstants.SAML_CALLBACK_REF,
- reqData
- );
+ CallbackHandler samlCallbackHandler = reqData.getSamlCallbackHandler();
if (samlCallbackHandler == null) {
throw new WSSecurityException(
WSSecurityException.ErrorCode.FAILURE,
diff --git a/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/RequestData.java b/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/RequestData.java
index f1029fa99..f4d923114 100644
--- a/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/RequestData.java
+++ b/ws-security-dom/src/main/java/org/apache/wss4j/dom/handler/RequestData.java
@@ -97,6 +97,7 @@ public class RequestData {
private Serializer encryptionSerializer;
private WSDocInfo wsDocInfo;
private Provider signatureProvider;
+ private CallbackHandler samlCallbackHandler;
/**
* Whether to add an InclusiveNamespaces PrefixList as a CanonicalizationMethod
@@ -780,4 +781,22 @@ public class RequestData {
public void setSignatureProvider(Provider signatureProvider) {
this.signatureProvider = signatureProvider;
}
+
+ /**
+ * Get the CallbackHandler used for SAML processing.
+ * This is used to process SAML Assertions, and to sign SAML Assertions.
+ * @return the CallbackHandler used for SAML processing.
+ */
+ public CallbackHandler getSamlCallbackHandler() {
+ return samlCallbackHandler;
+ }
+
+ /**
+ * Set the CallbackHandler used for SAML processing.
+ * @param samlCallbackHandler
+ */
+ public void setSamlCallbackHandler(CallbackHandler samlCallbackHandler) {
+ this.samlCallbackHandler = samlCallbackHandler;
+ }
+
}
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 c90f1d48d..9c441785b 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
@@ -155,19 +155,8 @@ public abstract class WSHandler {
+ " The danger here is that the actual encryption bytes will not be signed");
reqData.setStoreBytesInAttachment(false);
}
- } else if (actionToDo.getAction() == WSConstants.ST_SIGNED
- && actionToDo.getActionToken() == null) {
- decodeSignatureParameter(reqData);
- // it is possible and legal that we do not have a signature crypto here - thus ignore the exception.
- // This is usually the case for the SAML option "sender vouches". In this case no user crypto is
- // required.
- try {
- SignatureActionToken actionToken = new SignatureActionToken();
- actionToken.setCrypto(loadSignatureCrypto(reqData));
- actionToDo.setActionToken(actionToken);
- } catch (Exception ex) {
- LOG.debug(ex.getMessage(), ex);
- }
+ } else if (actionToDo.getAction() == WSConstants.ST_SIGNED) {
+ configureSTSignedAction(reqData, actionToDo);
} else if ((actionToDo.getAction() == WSConstants.ENCR
|| actionToDo.getAction() == WSConstants.DKT_ENCR)
&& actionToDo.getActionToken() == null) {
@@ -272,6 +261,31 @@ public abstract class WSHandler {
}
}
+ private void configureSTSignedAction(RequestData reqData, HandlerAction actionToDo) throws WSSecurityException {
+ if (actionToDo.getActionToken() == null) {
+ decodeSignatureParameter(reqData);
+ // it is possible and legal that we do not have a signature crypto here - thus ignore the exception.
+ // This is usually the case for the SAML option "sender vouches". In this case no user crypto is
+ // required.
+ try {
+ SignatureActionToken actionToken = new SignatureActionToken();
+ actionToken.setCrypto(loadSignatureCrypto(reqData));
+ actionToDo.setActionToken(actionToken);
+ } catch (Exception ex) {
+ LOG.debug(ex.getMessage(), ex);
+ }
+ }
+ if (reqData.getSamlCallbackHandler() == null) {
+ CallbackHandler samlCallbackHandler =
+ getCallbackHandler(
+ WSHandlerConstants.SAML_CALLBACK_CLASS,
+ WSHandlerConstants.SAML_CALLBACK_REF,
+ reqData
+ );
+ reqData.setSamlCallbackHandler(samlCallbackHandler);
+ }
+ }
+
private HandlerAction getSignatureActionThatSignsATimestamp(
List<HandlerAction> actions, RequestData reqData
) {
(ws-wss4j) 01/03: Removing SAML Signature crypto loading from action
Posted by co...@apache.org.
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
commit 22c76a46ce6e164f80aad0ac762c086a16f53059
Author: Colm O hEigeartaigh <co...@apache.org>
AuthorDate: Thu Jun 19 09:28:14 2025 +0100
Removing SAML Signature crypto loading from action
---
.../wss4j/dom/action/SAMLTokenSignedAction.java | 25 ++--------------------
.../org/apache/wss4j/dom/handler/WSHandler.java | 10 +++++++++
2 files changed, 12 insertions(+), 23 deletions(-)
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 b8720ef1d..0e9ae6ef5 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
@@ -23,7 +23,6 @@ import javax.security.auth.callback.CallbackHandler;
import org.apache.wss4j.common.SecurityActionToken;
import org.apache.wss4j.common.SignatureActionToken;
-import org.apache.wss4j.common.crypto.Crypto;
import org.apache.wss4j.common.ext.WSPasswordCallback;
import org.apache.wss4j.common.ext.WSSecurityException;
import org.apache.wss4j.common.saml.SamlAssertionWrapper;
@@ -37,21 +36,8 @@ import org.apache.wss4j.dom.saml.WSSecSignatureSAML;
public class SAMLTokenSignedAction implements Action {
- private static final org.slf4j.Logger LOG =
- org.slf4j.LoggerFactory.getLogger(SAMLTokenSignedAction.class);
-
public void execute(WSHandler handler, SecurityActionToken actionToken, RequestData reqData)
throws WSSecurityException {
- Crypto crypto = null;
-
- // it is possible and legal that we do not have a signature crypto here - thus ignore the exception.
- // This is usually the case for the SAML option "sender vouches". In this case no user crypto is
- // required.
- try {
- crypto = handler.loadSignatureCrypto(reqData);
- } catch (Exception ex) {
- LOG.debug(ex.getMessage(), ex);
- }
CallbackHandler samlCallbackHandler =
handler.getCallbackHandler(
@@ -89,14 +75,7 @@ public class SAMLTokenSignedAction implements Action {
CallbackHandler callbackHandler = reqData.getCallbackHandler();
- SignatureActionToken signatureToken = null;
- if (actionToken instanceof SignatureActionToken) {
- signatureToken = (SignatureActionToken)actionToken;
- }
- if (signatureToken == null) {
- signatureToken = reqData.getSignatureToken();
- }
-
+ SignatureActionToken signatureToken = reqData.getSignatureToken();
WSPasswordCallback pwCb = ActionUtils.constructPasswordCallback(signatureToken.getUser(), WSConstants.ST_SIGNED);
ActionUtils.performPasswordCallback(callbackHandler, pwCb, reqData);
@@ -124,7 +103,7 @@ public class SAMLTokenSignedAction implements Action {
try {
wsSign.build(
- crypto,
+ actionToken.getCrypto(),
samlAssertion,
samlCallback.getIssuerCrypto(),
samlCallback.getIssuerKeyName(),
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 5aecd979b..c90f1d48d 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
@@ -158,6 +158,16 @@ public abstract class WSHandler {
} else if (actionToDo.getAction() == WSConstants.ST_SIGNED
&& actionToDo.getActionToken() == null) {
decodeSignatureParameter(reqData);
+ // it is possible and legal that we do not have a signature crypto here - thus ignore the exception.
+ // This is usually the case for the SAML option "sender vouches". In this case no user crypto is
+ // required.
+ try {
+ SignatureActionToken actionToken = new SignatureActionToken();
+ actionToken.setCrypto(loadSignatureCrypto(reqData));
+ actionToDo.setActionToken(actionToken);
+ } catch (Exception ex) {
+ LOG.debug(ex.getMessage(), ex);
+ }
} else if ((actionToDo.getAction() == WSConstants.ENCR
|| actionToDo.getAction() == WSConstants.DKT_ENCR)
&& actionToDo.getActionToken() == null) {