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 28552ff36 Removing SAML Assertion from BSP check
28552ff36 is described below

commit 28552ff36e618196f92c24057d4a04756b3a858d
Author: Colm O hEigeartaigh <cohei...@apache.org>
AuthorDate: Mon Jun 23 16:52:45 2025 +0100

    Removing SAML Assertion from BSP check
---
 .../apache/wss4j/dom/str/DerivedKeyTokenSTRParser.java   |  2 +-
 .../org/apache/wss4j/dom/str/EncryptedKeySTRParser.java  |  4 ++--
 .../java/org/apache/wss4j/dom/str/STRParserUtil.java     | 16 +++++++---------
 .../apache/wss4j/dom/str/SecurityTokenRefSTRParser.java  |  2 +-
 .../org/apache/wss4j/dom/str/SignatureSTRParser.java     |  6 +++---
 5 files changed, 14 insertions(+), 16 deletions(-)

diff --git 
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/DerivedKeyTokenSTRParser.java
 
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/DerivedKeyTokenSTRParser.java
index f30282a1d..c5573a6cf 100644
--- 
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/DerivedKeyTokenSTRParser.java
+++ 
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/DerivedKeyTokenSTRParser.java
@@ -107,7 +107,7 @@ public class DerivedKeyTokenSTRParser implements STRParser {
             && (WSConstants.ST_UNSIGNED == action.intValue() || 
WSConstants.ST_SIGNED == action.intValue())) {
             SamlAssertionWrapper samlAssertion =
                 
(SamlAssertionWrapper)result.get(WSSecurityEngineResult.TAG_SAML_ASSERTION);
-            STRParserUtil.checkSamlTokenBSPCompliance(secRef, samlAssertion, 
data.getBSPEnforcer());
+            STRParserUtil.checkSamlTokenBSPCompliance(secRef, 
samlAssertion.getSaml2() != null, data.getBSPEnforcer());
 
             SAMLKeyInfo keyInfo =
                 SAMLUtil.getCredentialFromSubject(samlAssertion, new 
WSSSAMLKeyInfoProcessor(data), data.getSigVerCrypto());
diff --git 
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/EncryptedKeySTRParser.java
 
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/EncryptedKeySTRParser.java
index 85eee80a3..da0540e92 100644
--- 
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/EncryptedKeySTRParser.java
+++ 
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/EncryptedKeySTRParser.java
@@ -107,7 +107,7 @@ public class EncryptedKeySTRParser implements STRParser {
             && (WSConstants.ST_UNSIGNED == action.intValue() || 
WSConstants.ST_SIGNED == action.intValue())) {
             SamlAssertionWrapper samlAssertion =
                 
(SamlAssertionWrapper)result.get(WSSecurityEngineResult.TAG_SAML_ASSERTION);
-            STRParserUtil.checkSamlTokenBSPCompliance(secRef, samlAssertion, 
data.getBSPEnforcer());
+            STRParserUtil.checkSamlTokenBSPCompliance(secRef, 
samlAssertion.getSaml2() != null, data.getBSPEnforcer());
 
             SAMLKeyInfo keyInfo =
                 SAMLUtil.getCredentialFromSubject(samlAssertion, new 
WSSSAMLKeyInfoProcessor(data),
@@ -144,7 +144,7 @@ public class EncryptedKeySTRParser implements STRParser {
                     STRParserUtil.getAssertionFromKeyIdentifier(
                         secRef, strElement, data
                     );
-                STRParserUtil.checkSamlTokenBSPCompliance(secRef, 
samlAssertion, data.getBSPEnforcer());
+                STRParserUtil.checkSamlTokenBSPCompliance(secRef, 
samlAssertion.getSaml2() != null, data.getBSPEnforcer());
 
                 SAMLKeyInfo samlKi =
                     SAMLUtil.getCredentialFromSubject(samlAssertion,
diff --git 
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/STRParserUtil.java 
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/STRParserUtil.java
index d324657fc..1e1c5b083 100644
--- a/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/STRParserUtil.java
+++ b/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/STRParserUtil.java
@@ -185,24 +185,22 @@ public final class STRParserUtil {
      * Check that the SAML token referenced by the SecurityTokenReference 
argument
      * is BSP compliant.
      * @param secRef The SecurityTokenReference to the SAML token
-     * @param samlAssertion The SAML Token SamlAssertionWrapper object
+     * @param saml2Token If the STR refers to a SAML 2 token or not
      * @param bspEnforcer a BSPEnforcer instance to enforce BSP rules
      * @throws WSSecurityException
      */
     public static void checkSamlTokenBSPCompliance(
         SecurityTokenReference secRef,
-        SamlAssertionWrapper samlAssertion,
+        boolean saml2Token,
         BSPEnforcer bspEnforcer
     ) throws WSSecurityException {
         // Check the KeyIdentifier ValueType attributes
         if (secRef.containsKeyIdentifier()) {
             String valueType = secRef.getKeyIdentifierValueType();
-            if (samlAssertion.getSaml1() != null
-                && !WSConstants.WSS_SAML_KI_VALUE_TYPE.equals(valueType)) {
+            if (!saml2Token && 
!WSConstants.WSS_SAML_KI_VALUE_TYPE.equals(valueType)) {
                 bspEnforcer.handleBSPRule(BSPRule.R6603);
             }
-            if (samlAssertion.getSaml2() != null
-                && !WSConstants.WSS_SAML2_KI_VALUE_TYPE.equals(valueType)) {
+            if (saml2Token && 
!WSConstants.WSS_SAML2_KI_VALUE_TYPE.equals(valueType)) {
                 bspEnforcer.handleBSPRule(BSPRule.R6616);
             }
             String encoding = secRef.getKeyIdentifierEncodingType();
@@ -213,15 +211,15 @@ public final class STRParserUtil {
 
         // Check the TokenType attribute
         String tokenType = secRef.getTokenType();
-        if (samlAssertion.getSaml1() != null && 
!WSConstants.WSS_SAML_TOKEN_TYPE.equals(tokenType)) {
+        if (!saml2Token && !WSConstants.WSS_SAML_TOKEN_TYPE.equals(tokenType)) 
{
             bspEnforcer.handleBSPRule(BSPRule.R6611);
         }
-        if (samlAssertion.getSaml2() != null && 
!WSConstants.WSS_SAML2_TOKEN_TYPE.equals(tokenType)) {
+        if (saml2Token && !WSConstants.WSS_SAML2_TOKEN_TYPE.equals(tokenType)) 
{
             bspEnforcer.handleBSPRule(BSPRule.R6617);
         }
 
         // Check the ValueType attribute of the Reference for SAML2
-        if (samlAssertion.getSaml2() != null && secRef.containsReference()) {
+        if (saml2Token && secRef.containsReference()) {
             String valueType = secRef.getReference().getValueType();
             if (valueType != null && valueType.length() != 0) {
                 bspEnforcer.handleBSPRule(BSPRule.R6614);
diff --git 
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/SecurityTokenRefSTRParser.java
 
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/SecurityTokenRefSTRParser.java
index 703d02165..cf119571d 100644
--- 
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/SecurityTokenRefSTRParser.java
+++ 
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/SecurityTokenRefSTRParser.java
@@ -94,7 +94,7 @@ public class SecurityTokenRefSTRParser implements STRParser {
         SecurityTokenReference secRef,
         RequestData data
     ) throws WSSecurityException {
-        STRParserUtil.checkSamlTokenBSPCompliance(secRef, samlAssertion, 
data.getBSPEnforcer());
+        STRParserUtil.checkSamlTokenBSPCompliance(secRef, 
samlAssertion.getSaml2() != null, data.getBSPEnforcer());
         SAMLKeyInfo samlKi =
             SAMLUtil.getCredentialFromSubject(samlAssertion, new 
WSSSAMLKeyInfoProcessor(data), data.getSigVerCrypto());
         if (samlKi == null) {
diff --git 
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/SignatureSTRParser.java
 
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/SignatureSTRParser.java
index 3a6d3ee6d..caa4780b0 100644
--- 
a/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/SignatureSTRParser.java
+++ 
b/ws-security-dom/src/main/java/org/apache/wss4j/dom/str/SignatureSTRParser.java
@@ -134,7 +134,7 @@ public class SignatureSTRParser implements STRParser {
                 STRParserUtil.getAssertionFromKeyIdentifier(
                     secRef, secRef.getElement(), data
                 );
-            STRParserUtil.checkSamlTokenBSPCompliance(secRef, samlAssertion, 
data.getBSPEnforcer());
+            STRParserUtil.checkSamlTokenBSPCompliance(secRef, 
samlAssertion.getSaml2() != null, data.getBSPEnforcer());
 
             SAMLKeyInfo samlKi =
                 SAMLUtil.getCredentialFromSubject(samlAssertion,
@@ -299,7 +299,7 @@ public class SignatureSTRParser implements STRParser {
             && (WSConstants.ST_UNSIGNED == action.intValue() || 
WSConstants.ST_SIGNED == action.intValue())) {
             SamlAssertionWrapper samlAssertion =
                 
(SamlAssertionWrapper)result.get(WSSecurityEngineResult.TAG_SAML_ASSERTION);
-            STRParserUtil.checkSamlTokenBSPCompliance(secRef, samlAssertion, 
data.getBSPEnforcer());
+            STRParserUtil.checkSamlTokenBSPCompliance(secRef, 
samlAssertion.getSaml2() != null, data.getBSPEnforcer());
 
             SAMLKeyInfo keyInfo = samlAssertion.getSubjectKeyInfo();
             if (keyInfo == null) {
@@ -383,7 +383,7 @@ public class SignatureSTRParser implements STRParser {
                             new WSSSAMLKeyInfoProcessor(data), 
data.getSigVerCrypto()
                         );
                     }
-                    STRParserUtil.checkSamlTokenBSPCompliance(secRef, 
samlAssertion, data.getBSPEnforcer());
+                    STRParserUtil.checkSamlTokenBSPCompliance(secRef, 
samlAssertion.getSaml2() != null, data.getBSPEnforcer());
 
                     SAMLKeyInfo keyInfo = samlAssertion.getSubjectKeyInfo();
                     X509Certificate[] foundCerts = keyInfo.getCerts();

Reply via email to