This is an automated email from the ASF dual-hosted git repository.
coheigea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/master by this push:
new 0b3dbe8 CXF-7616 - Add support for (SAML) IssuedToken policy
validation
0b3dbe8 is described below
commit 0b3dbe8078ee4164c7ddc3242d6dc92ebf9ce2f6
Author: Colm O hEigeartaigh <[email protected]>
AuthorDate: Thu Jan 18 14:53:14 2018 +0000
CXF-7616 - Add support for (SAML) IssuedToken policy validation
---
.../AbstractSupportingTokenPolicyValidator.java | 18 ++++++++++++++++++
.../ConcreteSupportingTokenPolicyValidator.java | 7 ++++++-
.../EncryptedTokenPolicyValidator.java | 7 ++++++-
.../EndorsingEncryptedTokenPolicyValidator.java | 7 ++++++-
.../EndorsingTokenPolicyValidator.java | 7 ++++++-
.../SignedEncryptedTokenPolicyValidator.java | 7 ++++++-
.../SignedEndorsingEncryptedTokenPolicyValidator.java | 7 ++++++-
.../SignedEndorsingTokenPolicyValidator.java | 7 ++++++-
.../policyvalidators/SignedTokenPolicyValidator.java | 7 ++++++-
.../org/apache/cxf/systest/sts/transport/DoubleIt.wsdl | 2 +-
.../cxf/systest/wssec/examples/saml/DoubleItSaml.wsdl | 2 +-
11 files changed, 68 insertions(+), 10 deletions(-)
diff --git
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/AbstractSupportingTokenPolicyValidator.java
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/AbstractSupportingTokenPolicyValidator.java
index 854218b..a664d49 100644
---
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/AbstractSupportingTokenPolicyValidator.java
+++
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/AbstractSupportingTokenPolicyValidator.java
@@ -68,6 +68,7 @@ import
org.apache.wss4j.policy.model.AbstractToken.DerivedKeys;
import org.apache.wss4j.policy.model.EncryptedElements;
import org.apache.wss4j.policy.model.EncryptedParts;
import org.apache.wss4j.policy.model.Header;
+import org.apache.wss4j.policy.model.IssuedToken;
import org.apache.wss4j.policy.model.RequiredElements;
import org.apache.wss4j.policy.model.SignedElements;
import org.apache.wss4j.policy.model.SignedParts;
@@ -903,4 +904,21 @@ public abstract class
AbstractSupportingTokenPolicyValidator extends AbstractSec
PolicyUtils.assertPolicy(aim, new
QName(token.getName().getNamespaceURI(), derivedKeys.name()));
}
}
+
+ protected static boolean isSamlTokenRequiredForIssuedToken(IssuedToken
issuedToken) {
+ Element template = issuedToken.getRequestSecurityTokenTemplate();
+ if (template != null) {
+ Element child = DOMUtils.getFirstElement(template);
+ while (child != null) {
+ if ("TokenType".equals(child.getLocalName())) {
+ String content = child.getTextContent();
+ return WSS4JConstants.WSS_SAML_TOKEN_TYPE.equals(content)
+ || WSS4JConstants.WSS_SAML2_TOKEN_TYPE.equals(content);
+ }
+ child = DOMUtils.getNextElement(child);
+ }
+ }
+ return false;
+ }
+
}
diff --git
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/ConcreteSupportingTokenPolicyValidator.java
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/ConcreteSupportingTokenPolicyValidator.java
index 0c9a7c1..9f267ca 100644
---
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/ConcreteSupportingTokenPolicyValidator.java
+++
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/ConcreteSupportingTokenPolicyValidator.java
@@ -96,7 +96,12 @@ public class ConcreteSupportingTokenPolicyValidator extends
AbstractSupportingTo
if (!processSCTokens(parameters, false)) {
processingFailed = true;
}
- } else if (!(token instanceof IssuedToken)) {
+ } else if (token instanceof IssuedToken) {
+ IssuedToken issuedToken = (IssuedToken)token;
+ if (isSamlTokenRequiredForIssuedToken(issuedToken) &&
!processSAMLTokens(parameters)) {
+ processingFailed = true;
+ }
+ } else {
processingFailed = true;
}
diff --git
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/EncryptedTokenPolicyValidator.java
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/EncryptedTokenPolicyValidator.java
index 0494f2a..6cbaba3 100644
---
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/EncryptedTokenPolicyValidator.java
+++
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/EncryptedTokenPolicyValidator.java
@@ -104,7 +104,12 @@ public class EncryptedTokenPolicyValidator extends
AbstractSupportingTokenPolicy
if (!processSAMLTokens(parameters)) {
processingFailed = true;
}
- } else if (!(token instanceof IssuedToken)) {
+ } else if (token instanceof IssuedToken) {
+ IssuedToken issuedToken = (IssuedToken)token;
+ if (isSamlTokenRequiredForIssuedToken(issuedToken) &&
!processSAMLTokens(parameters)) {
+ processingFailed = true;
+ }
+ } else {
processingFailed = true;
}
diff --git
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/EndorsingEncryptedTokenPolicyValidator.java
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/EndorsingEncryptedTokenPolicyValidator.java
index 743fd56..9f4fd14 100644
---
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/EndorsingEncryptedTokenPolicyValidator.java
+++
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/EndorsingEncryptedTokenPolicyValidator.java
@@ -113,7 +113,12 @@ public class EndorsingEncryptedTokenPolicyValidator
extends AbstractSupportingTo
if (!processSAMLTokens(parameters)) {
processingFailed = true;
}
- } else if (!(token instanceof IssuedToken)) {
+ } else if (token instanceof IssuedToken) {
+ IssuedToken issuedToken = (IssuedToken)token;
+ if (isSamlTokenRequiredForIssuedToken(issuedToken) &&
!processSAMLTokens(parameters)) {
+ processingFailed = true;
+ }
+ } else {
processingFailed = true;
}
diff --git
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/EndorsingTokenPolicyValidator.java
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/EndorsingTokenPolicyValidator.java
index e013e7b..d5f9de0 100644
---
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/EndorsingTokenPolicyValidator.java
+++
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/EndorsingTokenPolicyValidator.java
@@ -102,7 +102,12 @@ public class EndorsingTokenPolicyValidator extends
AbstractSupportingTokenPolicy
if (!processSAMLTokens(parameters)) {
processingFailed = true;
}
- } else if (!(token instanceof IssuedToken)) {
+ } else if (token instanceof IssuedToken) {
+ IssuedToken issuedToken = (IssuedToken)token;
+ if (isSamlTokenRequiredForIssuedToken(issuedToken) &&
!processSAMLTokens(parameters)) {
+ processingFailed = true;
+ }
+ } else {
processingFailed = true;
}
diff --git
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedEncryptedTokenPolicyValidator.java
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedEncryptedTokenPolicyValidator.java
index 6d929d3..1303688 100644
---
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedEncryptedTokenPolicyValidator.java
+++
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedEncryptedTokenPolicyValidator.java
@@ -104,7 +104,12 @@ public class SignedEncryptedTokenPolicyValidator extends
AbstractSupportingToken
if (!processSAMLTokens(parameters)) {
processingFailed = true;
}
- } else if (!(token instanceof IssuedToken)) {
+ } else if (token instanceof IssuedToken) {
+ IssuedToken issuedToken = (IssuedToken)token;
+ if (isSamlTokenRequiredForIssuedToken(issuedToken) &&
!processSAMLTokens(parameters)) {
+ processingFailed = true;
+ }
+ } else {
processingFailed = true;
}
diff --git
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedEndorsingEncryptedTokenPolicyValidator.java
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedEndorsingEncryptedTokenPolicyValidator.java
index 2b0e106..4a50f55 100644
---
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedEndorsingEncryptedTokenPolicyValidator.java
+++
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedEndorsingEncryptedTokenPolicyValidator.java
@@ -113,7 +113,12 @@ public class SignedEndorsingEncryptedTokenPolicyValidator
extends AbstractSuppor
if (!processSCTokens(parameters, derived)) {
processingFailed = true;
}
- } else if (!(token instanceof IssuedToken)) {
+ } else if (token instanceof IssuedToken) {
+ IssuedToken issuedToken = (IssuedToken)token;
+ if (isSamlTokenRequiredForIssuedToken(issuedToken) &&
!processSAMLTokens(parameters)) {
+ processingFailed = true;
+ }
+ } else {
processingFailed = true;
}
diff --git
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedEndorsingTokenPolicyValidator.java
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedEndorsingTokenPolicyValidator.java
index b2a642e..a64382d 100644
---
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedEndorsingTokenPolicyValidator.java
+++
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedEndorsingTokenPolicyValidator.java
@@ -102,7 +102,12 @@ public class SignedEndorsingTokenPolicyValidator extends
AbstractSupportingToken
if (!processSCTokens(parameters, derived)) {
processingFailed = true;
}
- } else if (!(token instanceof IssuedToken)) {
+ } else if (token instanceof IssuedToken) {
+ IssuedToken issuedToken = (IssuedToken)token;
+ if (isSamlTokenRequiredForIssuedToken(issuedToken) &&
!processSAMLTokens(parameters)) {
+ processingFailed = true;
+ }
+ } else {
processingFailed = true;
}
diff --git
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedTokenPolicyValidator.java
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedTokenPolicyValidator.java
index 4c95dad..f84346b 100644
---
a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedTokenPolicyValidator.java
+++
b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyvalidators/SignedTokenPolicyValidator.java
@@ -94,7 +94,12 @@ public class SignedTokenPolicyValidator extends
AbstractSupportingTokenPolicyVal
if (!processSCTokens(parameters, false)) {
processingFailed = true;
}
- } else if (!(token instanceof IssuedToken)) {
+ } else if (token instanceof IssuedToken) {
+ IssuedToken issuedToken = (IssuedToken)token;
+ if (isSamlTokenRequiredForIssuedToken(issuedToken) &&
!processSAMLTokens(parameters)) {
+ processingFailed = true;
+ }
+ } else {
processingFailed = true;
}
diff --git
a/services/sts/systests/basic/src/test/resources/org/apache/cxf/systest/sts/transport/DoubleIt.wsdl
b/services/sts/systests/basic/src/test/resources/org/apache/cxf/systest/sts/transport/DoubleIt.wsdl
index 4da85f5..69287c4 100644
---
a/services/sts/systests/basic/src/test/resources/org/apache/cxf/systest/sts/transport/DoubleIt.wsdl
+++
b/services/sts/systests/basic/src/test/resources/org/apache/cxf/systest/sts/transport/DoubleIt.wsdl
@@ -520,7 +520,7 @@
</sp:RequestSecurityTokenTemplate>
<wsp:Policy>
<sp:RequireInternalReference/>
- <sp:RequireDerivedKeys/>
+ <!-- TODO <sp:RequireDerivedKeys/> -->
</wsp:Policy>
<sp:Issuer>
<wsaw:Address>http://localhost:8080/STS/STSUT
diff --git
a/systests/ws-security-examples/src/test/resources/org/apache/cxf/systest/wssec/examples/saml/DoubleItSaml.wsdl
b/systests/ws-security-examples/src/test/resources/org/apache/cxf/systest/wssec/examples/saml/DoubleItSaml.wsdl
index 70c2233..af0b2df 100644
---
a/systests/ws-security-examples/src/test/resources/org/apache/cxf/systest/wssec/examples/saml/DoubleItSaml.wsdl
+++
b/systests/ws-security-examples/src/test/resources/org/apache/cxf/systest/wssec/examples/saml/DoubleItSaml.wsdl
@@ -643,7 +643,7 @@
<t:SignWith>http://www.w3.org/2000/09/xmldsig#hmac-sha1</t:SignWith>
</sp:RequestSecurityTokenTemplate>
<wsp:Policy>
- <sp:RequireDerivedKeys/>
+ <!-- TODO re-enable <sp:RequireDerivedKeys/>
-->
<sp:RequireInternalReference/>
</wsp:Policy>
</sp:IssuedToken>
--
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].