mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-05-31 01:02:14 +00:00
Add createDefaultAssertionValidatorWithParameters
Closes gh-11675
This commit is contained in:
parent
095faffd70
commit
9a1fae3e8e
@ -432,10 +432,8 @@ public final class OpenSaml4AuthenticationProvider implements AuthenticationProv
|
|||||||
*/
|
*/
|
||||||
public static Converter<AssertionToken, Saml2ResponseValidatorResult> createDefaultAssertionValidator() {
|
public static Converter<AssertionToken, Saml2ResponseValidatorResult> createDefaultAssertionValidator() {
|
||||||
|
|
||||||
return createAssertionValidator(Saml2ErrorCodes.INVALID_ASSERTION,
|
return createDefaultAssertionValidatorWithParameters(
|
||||||
(assertionToken) -> SAML20AssertionValidators.attributeValidator,
|
(params) -> params.put(SAML2AssertionValidationParameters.CLOCK_SKEW, Duration.ofMinutes(5)));
|
||||||
(assertionToken) -> createValidationContext(assertionToken,
|
|
||||||
(params) -> params.put(SAML2AssertionValidationParameters.CLOCK_SKEW, Duration.ofMinutes(5))));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -444,7 +442,9 @@ public final class OpenSaml4AuthenticationProvider implements AuthenticationProv
|
|||||||
* @param contextConverter the conversion strategy to use to generate a
|
* @param contextConverter the conversion strategy to use to generate a
|
||||||
* {@link ValidationContext} for each assertion being validated
|
* {@link ValidationContext} for each assertion being validated
|
||||||
* @return the default assertion validator strategy
|
* @return the default assertion validator strategy
|
||||||
|
* @deprecated Use {@link #createDefaultAssertionValidatorWithParameters} instead
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public static Converter<AssertionToken, Saml2ResponseValidatorResult> createDefaultAssertionValidator(
|
public static Converter<AssertionToken, Saml2ResponseValidatorResult> createDefaultAssertionValidator(
|
||||||
Converter<AssertionToken, ValidationContext> contextConverter) {
|
Converter<AssertionToken, ValidationContext> contextConverter) {
|
||||||
|
|
||||||
@ -452,6 +452,21 @@ public final class OpenSaml4AuthenticationProvider implements AuthenticationProv
|
|||||||
(assertionToken) -> SAML20AssertionValidators.attributeValidator, contextConverter);
|
(assertionToken) -> SAML20AssertionValidators.attributeValidator, contextConverter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a default strategy for validating each SAML 2.0 Assertion and associated
|
||||||
|
* {@link Authentication} token
|
||||||
|
* @param validationContextParameters a consumer for editing the values passed to the
|
||||||
|
* {@link ValidationContext} for each assertion being validated
|
||||||
|
* @return the default assertion validator strategy
|
||||||
|
* @since 5.8
|
||||||
|
*/
|
||||||
|
public static Converter<AssertionToken, Saml2ResponseValidatorResult> createDefaultAssertionValidatorWithParameters(
|
||||||
|
Consumer<Map<String, Object>> validationContextParameters) {
|
||||||
|
return createAssertionValidator(Saml2ErrorCodes.INVALID_ASSERTION,
|
||||||
|
(assertionToken) -> SAML20AssertionValidators.attributeValidator,
|
||||||
|
(assertionToken) -> createValidationContext(assertionToken, validationContextParameters));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a default strategy for converting a SAML 2.0 Response and
|
* Construct a default strategy for converting a SAML 2.0 Response and
|
||||||
* {@link Authentication} token into a {@link Saml2Authentication}
|
* {@link Authentication} token into a {@link Saml2Authentication}
|
||||||
|
@ -520,6 +520,25 @@ public class OpenSaml4AuthenticationProviderTests {
|
|||||||
// @formatter:on
|
// @formatter:on
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// gh-11675
|
||||||
|
@Test
|
||||||
|
public void authenticateWhenUsingCustomAssertionValidatorThenUses() {
|
||||||
|
OpenSaml4AuthenticationProvider provider = new OpenSaml4AuthenticationProvider();
|
||||||
|
Consumer<Map<String, Object>> validationParameters = mock(Consumer.class);
|
||||||
|
// @formatter:off
|
||||||
|
provider.setAssertionValidator(OpenSaml4AuthenticationProvider
|
||||||
|
.createDefaultAssertionValidatorWithParameters(validationParameters));
|
||||||
|
// @formatter:on
|
||||||
|
Response response = response();
|
||||||
|
Assertion assertion = assertion();
|
||||||
|
OneTimeUse oneTimeUse = build(OneTimeUse.DEFAULT_ELEMENT_NAME);
|
||||||
|
assertion.getConditions().getConditions().add(oneTimeUse);
|
||||||
|
response.getAssertions().add(assertion);
|
||||||
|
Saml2AuthenticationToken token = token(signed(response), verifying(registration()));
|
||||||
|
provider.authenticate(token);
|
||||||
|
verify(validationParameters).accept(any());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void authenticateWhenCustomAssertionValidatorThenUses() {
|
public void authenticateWhenCustomAssertionValidatorThenUses() {
|
||||||
Converter<OpenSaml4AuthenticationProvider.AssertionToken, Saml2ResponseValidatorResult> validator = mock(
|
Converter<OpenSaml4AuthenticationProvider.AssertionToken, Saml2ResponseValidatorResult> validator = mock(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user