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();