diff --git a/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2AuthorizationCodeRequestAuthenticationProvider.java b/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2AuthorizationCodeRequestAuthenticationProvider.java index 9b37280c..994c5be0 100644 --- a/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2AuthorizationCodeRequestAuthenticationProvider.java +++ b/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2AuthorizationCodeRequestAuthenticationProvider.java @@ -355,7 +355,8 @@ public final class OAuth2AuthorizationCodeRequestAuthenticationProvider implemen if (this.authorizationConsentCustomizer != null) { // @formatter:off OAuth2AuthorizationConsentAuthenticationContext authorizationConsentAuthenticationContext = - OAuth2AuthorizationConsentAuthenticationContext.with(authorizationCodeRequestAuthentication, authorizationConsentBuilder) + OAuth2AuthorizationConsentAuthenticationContext.with(authorizationCodeRequestAuthentication) + .authorizationConsent(authorizationConsentBuilder) .registeredClient(registeredClient) .authorization(authorization) .authorizationRequest(authorizationRequest) diff --git a/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2AuthorizationConsentAuthenticationContext.java b/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2AuthorizationConsentAuthenticationContext.java index b7d0b477..95cf1400 100644 --- a/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2AuthorizationConsentAuthenticationContext.java +++ b/oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2AuthorizationConsentAuthenticationContext.java @@ -17,7 +17,6 @@ package org.springframework.security.oauth2.server.authorization.authentication; import java.util.Map; -import org.springframework.security.core.Authentication; import org.springframework.security.oauth2.core.authentication.OAuth2AuthenticationContext; import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest; import org.springframework.security.oauth2.server.authorization.OAuth2Authorization; @@ -78,14 +77,13 @@ public final class OAuth2AuthorizationConsentAuthenticationContext extends OAuth } /** - * Constructs a new {@link Builder} with the provided {@link Authentication} and {@link OAuth2AuthorizationConsent.Builder}. + * Constructs a new {@link Builder} with the provided {@link OAuth2AuthorizationCodeRequestAuthenticationToken}. * - * @param authentication the {@link Authentication} - * @param authorizationConsentBuilder the {@link OAuth2AuthorizationConsent.Builder} + * @param authentication the {@link OAuth2AuthorizationCodeRequestAuthenticationToken} * @return the {@link Builder} */ - public static Builder with(Authentication authentication, OAuth2AuthorizationConsent.Builder authorizationConsentBuilder) { - return new Builder(authentication, authorizationConsentBuilder); + public static Builder with(OAuth2AuthorizationCodeRequestAuthenticationToken authentication) { + return new Builder(authentication); } /** @@ -93,10 +91,18 @@ public final class OAuth2AuthorizationConsentAuthenticationContext extends OAuth */ public static final class Builder extends AbstractBuilder { - private Builder(Authentication authentication, OAuth2AuthorizationConsent.Builder authorizationConsentBuilder) { + private Builder(OAuth2AuthorizationCodeRequestAuthenticationToken authentication) { super(authentication); - Assert.notNull(authorizationConsentBuilder, "authorizationConsentBuilder cannot be null"); - put(OAuth2AuthorizationConsent.Builder.class, authorizationConsentBuilder); + } + + /** + * Sets the {@link OAuth2AuthorizationConsent.Builder authorization consent builder}. + * + * @param authorizationConsent the {@link OAuth2AuthorizationConsent.Builder} + * @return the {@link Builder} for further configuration + */ + public Builder authorizationConsent(OAuth2AuthorizationConsent.Builder authorizationConsent) { + return put(OAuth2AuthorizationConsent.Builder.class, authorizationConsent); } /** @@ -135,6 +141,7 @@ public final class OAuth2AuthorizationConsentAuthenticationContext extends OAuth * @return the {@link OAuth2AuthorizationConsentAuthenticationContext} */ public OAuth2AuthorizationConsentAuthenticationContext build() { + Assert.notNull(get(OAuth2AuthorizationConsent.Builder.class), "authorizationConsentBuilder cannot be null"); Assert.notNull(get(RegisteredClient.class), "registeredClient cannot be null"); Assert.notNull(get(OAuth2Authorization.class), "authorization cannot be null"); Assert.notNull(get(OAuth2AuthorizationRequest.class), "authorizationRequest cannot be null"); diff --git a/oauth2-authorization-server/src/test/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2AuthorizationConsentAuthenticationContextTests.java b/oauth2-authorization-server/src/test/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2AuthorizationConsentAuthenticationContextTests.java index c1594c06..84110b66 100644 --- a/oauth2-authorization-server/src/test/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2AuthorizationConsentAuthenticationContextTests.java +++ b/oauth2-authorization-server/src/test/java/org/springframework/security/oauth2/server/authorization/authentication/OAuth2AuthorizationConsentAuthenticationContextTests.java @@ -51,23 +51,18 @@ public class OAuth2AuthorizationConsentAuthenticationContextTests { @Test public void withWhenAuthenticationNullThenThrowIllegalArgumentException() { - assertThatThrownBy(() -> OAuth2AuthorizationConsentAuthenticationContext.with(null, this.authorizationConsentBuilder)) + assertThatThrownBy(() -> OAuth2AuthorizationConsentAuthenticationContext.with(null)) .isInstanceOf(IllegalArgumentException.class) .hasMessage("authentication cannot be null"); } - @Test - public void withWhenAuthorizationConsentBuilderNullThenThrowIllegalArgumentException() { - assertThatThrownBy(() -> OAuth2AuthorizationConsentAuthenticationContext.with(this.authorizationCodeRequestAuthentication, null)) - .isInstanceOf(IllegalArgumentException.class) - .hasMessage("authorizationConsentBuilder cannot be null"); - } - @Test public void setWhenValueNullThenThrowIllegalArgumentException() { OAuth2AuthorizationConsentAuthenticationContext.Builder builder = - OAuth2AuthorizationConsentAuthenticationContext.with(this.authorizationCodeRequestAuthentication, this.authorizationConsentBuilder); + OAuth2AuthorizationConsentAuthenticationContext.with(this.authorizationCodeRequestAuthentication); + assertThatThrownBy(() -> builder.authorizationConsent(null)) + .isInstanceOf(IllegalArgumentException.class); assertThatThrownBy(() -> builder.registeredClient(null)) .isInstanceOf(IllegalArgumentException.class); assertThatThrownBy(() -> builder.authorization(null)) @@ -81,7 +76,12 @@ public class OAuth2AuthorizationConsentAuthenticationContextTests { @Test public void buildWhenRequiredValueNullThenThrowIllegalArgumentException() { OAuth2AuthorizationConsentAuthenticationContext.Builder builder = - OAuth2AuthorizationConsentAuthenticationContext.with(this.authorizationCodeRequestAuthentication, this.authorizationConsentBuilder); + OAuth2AuthorizationConsentAuthenticationContext.with(this.authorizationCodeRequestAuthentication); + + assertThatThrownBy(builder::build) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("authorizationConsentBuilder cannot be null"); + builder.authorizationConsent(this.authorizationConsentBuilder); assertThatThrownBy(builder::build) .isInstanceOf(IllegalArgumentException.class) @@ -104,7 +104,8 @@ public class OAuth2AuthorizationConsentAuthenticationContextTests { @Test public void buildWhenAllValuesProvidedThenAllValuesAreSet() { OAuth2AuthorizationConsentAuthenticationContext context = - OAuth2AuthorizationConsentAuthenticationContext.with(this.authorizationCodeRequestAuthentication, this.authorizationConsentBuilder) + OAuth2AuthorizationConsentAuthenticationContext.with(this.authorizationCodeRequestAuthentication) + .authorizationConsent(this.authorizationConsentBuilder) .registeredClient(this.registeredClient) .authorization(this.authorization) .authorizationRequest(this.authorizationRequest)