Package swiss.trustbroker.saml.util
Class AssertionValidator
java.lang.Object
swiss.trustbroker.saml.util.AssertionValidator
Validate (parts of) SAML messages applying our XTB specific business rules to increase security. The XTB security properties
allow to control policy checks on a more fine-grained level in case we are too restrictive. The class is used as follows:
- - SAML POST AuthnRequest incoming from RPs - SAML POST Response incoming from CP
- - SAML Assertions incoming via WS-Trust 1.3 interface (this one is pre-checked by wss4j with a bad error handling)
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic class -
Method Summary
Modifier and TypeMethodDescriptionvalidateArtifactResolve(org.opensaml.saml.saml2.core.ArtifactResolve artifactResolve, TrustBrokerProperties properties, List<org.opensaml.security.credential.Credential> trustCredentials, List<String> allowedSignatureAlgorithms) validateAssertion(org.opensaml.saml.saml2.core.Assertion assertion, Instant now, List<org.opensaml.security.credential.Credential> credentials, List<String> allowedSignatureAlgorithms, TrustBrokerProperties properties, ClaimsParty claimsParty, Qoa qoa, AssertionValidator.ExpectedAssertionValues expectedValues) static voidvalidateAssertionId(org.opensaml.saml.saml2.core.Assertion assertion) static voidvalidateAssertionIssuer(org.opensaml.saml.saml2.core.Assertion assertion, String expectedIssuer, TrustBrokerProperties properties) validateAuthnRequest(org.opensaml.saml.saml2.core.AuthnRequest authnRequest, List<org.opensaml.security.credential.Credential> credentials, List<String> allowedSignatureAlgorithms, AcWhitelist acWhiteList, TrustBrokerProperties properties, SecurityPolicies securityPolicies, swiss.trustbroker.common.saml.dto.SignatureContext signatureContext, Qoa rpQoa) the check 'require signed AuthnRequest' is based on signatureContext (not SecurityPolicies)static voidvalidateQoaRequirement(String contextClass, QoaConfig qoaConfig, QoaComparison comparison, List<String> expectedContextClasses, Map<String, Integer> globalMapping, String issuer) validateRequestSignature(org.opensaml.saml.saml2.core.RequestAbstractType request, List<org.opensaml.security.credential.Credential> credentials, List<String> allowedSignatureAlgorithms, TrustBrokerProperties properties, swiss.trustbroker.common.saml.dto.SignatureContext signatureContext) validateResponse(ResponseData<org.opensaml.saml.saml2.core.Response> responseData, List<org.opensaml.saml.saml2.core.Assertion> assertions, List<org.opensaml.security.credential.Credential> credentials, List<String> allowedSignatureAlgorithms, TrustBrokerProperties properties, ClaimsParty claimsParty, Qoa qoa, AssertionValidator.ExpectedAssertionValues expectedValues) validateRstAssertion(org.opensaml.saml.saml2.core.Assertion assertion, TrustBrokerProperties properties, ClaimsParty claimsParty, SecurityPolicies securityPolicies, Instant now, AssertionValidator.ExpectedAssertionValues expectedValues, Optional<List<org.opensaml.security.credential.Credential>> signatureValidationCredentials, List<String> allowedSignatureAlgorithms) RST case of WSTrust service: The header assertion is already checked bywss4j.validateTokenAssertion(ClaimsParty claimsParty, org.opensaml.saml.saml2.core.Assertion assertion, TrustBrokerProperties trustBrokerProperties) static voidvalidCpSession(StateData state)
-
Method Details
-
validateAuthnRequest
public static AssertionValidator.MessageValidationResult validateAuthnRequest(org.opensaml.saml.saml2.core.AuthnRequest authnRequest, List<org.opensaml.security.credential.Credential> credentials, List<String> allowedSignatureAlgorithms, AcWhitelist acWhiteList, TrustBrokerProperties properties, SecurityPolicies securityPolicies, swiss.trustbroker.common.saml.dto.SignatureContext signatureContext, Qoa rpQoa) the check 'require signed AuthnRequest' is based on signatureContext (not SecurityPolicies) -
validateResponse
public static AssertionValidator.MessageValidationResult validateResponse(ResponseData<org.opensaml.saml.saml2.core.Response> responseData, List<org.opensaml.saml.saml2.core.Assertion> assertions, List<org.opensaml.security.credential.Credential> credentials, List<String> allowedSignatureAlgorithms, TrustBrokerProperties properties, ClaimsParty claimsParty, Qoa qoa, AssertionValidator.ExpectedAssertionValues expectedValues) - Returns:
- signatureValidated true if for the response and all assertions, a signature is present and has been successfully validated
-
validateRstAssertion
public static AssertionValidator.MessageValidationResult validateRstAssertion(org.opensaml.saml.saml2.core.Assertion assertion, TrustBrokerProperties properties, ClaimsParty claimsParty, SecurityPolicies securityPolicies, Instant now, AssertionValidator.ExpectedAssertionValues expectedValues, Optional<List<org.opensaml.security.credential.Credential>> signatureValidationCredentials, List<String> allowedSignatureAlgorithms) RST case of WSTrust service: The header assertion is already checked bywss4j.- Parameters:
assertion-properties-claimsParty-securityPolicies-now- current time if nullexpectedValues- default ExpectedAssertionValues if nullsignatureValidationCredentials- signature checked if present- Returns:
- validation result
-
validateAssertion
public static AssertionValidator.MessageValidationResult validateAssertion(org.opensaml.saml.saml2.core.Assertion assertion, Instant now, List<org.opensaml.security.credential.Credential> credentials, List<String> allowedSignatureAlgorithms, TrustBrokerProperties properties, ClaimsParty claimsParty, Qoa qoa, AssertionValidator.ExpectedAssertionValues expectedValues) -
validCpSession
-
validateAssertionId
public static void validateAssertionId(org.opensaml.saml.saml2.core.Assertion assertion) -
validateAssertionIssuer
public static void validateAssertionIssuer(org.opensaml.saml.saml2.core.Assertion assertion, String expectedIssuer, TrustBrokerProperties properties) -
validateRequestSignature
public static AssertionValidator.MessageValidationResult validateRequestSignature(org.opensaml.saml.saml2.core.RequestAbstractType request, List<org.opensaml.security.credential.Credential> credentials, List<String> allowedSignatureAlgorithms, TrustBrokerProperties properties, swiss.trustbroker.common.saml.dto.SignatureContext signatureContext) -
validateQoaRequirement
-
validateArtifactResolve
public static AssertionValidator.MessageValidationResult validateArtifactResolve(org.opensaml.saml.saml2.core.ArtifactResolve artifactResolve, TrustBrokerProperties properties, List<org.opensaml.security.credential.Credential> trustCredentials, List<String> allowedSignatureAlgorithms) -
validateTokenAssertion
public static AssertionValidator.MessageValidationResult validateTokenAssertion(ClaimsParty claimsParty, org.opensaml.saml.saml2.core.Assertion assertion, TrustBrokerProperties trustBrokerProperties)
-