diff --git a/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/web/method/annotation/OAuth2AuthorizedClientArgumentResolver.java b/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/web/method/annotation/OAuth2AuthorizedClientArgumentResolver.java index 951ee9effa..95ef7526fa 100644 --- a/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/web/method/annotation/OAuth2AuthorizedClientArgumentResolver.java +++ b/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/web/method/annotation/OAuth2AuthorizedClientArgumentResolver.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,16 +27,11 @@ import org.springframework.security.authentication.AnonymousAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.authority.AuthorityUtils; import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.oauth2.client.ClientCredentialsOAuth2AuthorizedClientProvider; import org.springframework.security.oauth2.client.OAuth2AuthorizeRequest; import org.springframework.security.oauth2.client.OAuth2AuthorizedClient; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager; -import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider; -import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProviderBuilder; import org.springframework.security.oauth2.client.annotation.RegisteredOAuth2AuthorizedClient; import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken; -import org.springframework.security.oauth2.client.endpoint.OAuth2AccessTokenResponseClient; -import org.springframework.security.oauth2.client.endpoint.OAuth2ClientCredentialsGrantRequest; import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; import org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizedClientManager; import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository; @@ -74,8 +69,6 @@ public final class OAuth2AuthorizedClientArgumentResolver implements HandlerMeth private OAuth2AuthorizedClientManager authorizedClientManager; - private boolean defaultAuthorizedClientManager; - /** * Constructs an {@code OAuth2AuthorizedClientArgumentResolver} using the provided * parameters. @@ -100,7 +93,6 @@ public final class OAuth2AuthorizedClientArgumentResolver implements HandlerMeth Assert.notNull(authorizedClientRepository, "authorizedClientRepository cannot be null"); this.authorizedClientManager = new DefaultOAuth2AuthorizedClientManager(clientRegistrationRepository, authorizedClientRepository); - this.defaultAuthorizedClientManager = true; } @Override @@ -153,46 +145,4 @@ public final class OAuth2AuthorizedClientArgumentResolver implements HandlerMeth return null; } - /** - * Sets the client used when requesting an access token credential at the Token - * Endpoint for the {@code client_credentials} grant. - * @param clientCredentialsTokenResponseClient the client used when requesting an - * access token credential at the Token Endpoint for the {@code client_credentials} - * grant - * @deprecated Use - * {@link #OAuth2AuthorizedClientArgumentResolver(OAuth2AuthorizedClientManager)} - * instead. Create an instance of - * {@link ClientCredentialsOAuth2AuthorizedClientProvider} configured with a - * {@link ClientCredentialsOAuth2AuthorizedClientProvider#setAccessTokenResponseClient(OAuth2AccessTokenResponseClient) - * DefaultClientCredentialsTokenResponseClient} (or a custom one) and than supply it - * to - * {@link DefaultOAuth2AuthorizedClientManager#setAuthorizedClientProvider(OAuth2AuthorizedClientProvider) - * DefaultOAuth2AuthorizedClientManager}. - */ - @Deprecated - public void setClientCredentialsTokenResponseClient( - OAuth2AccessTokenResponseClient clientCredentialsTokenResponseClient) { - Assert.notNull(clientCredentialsTokenResponseClient, "clientCredentialsTokenResponseClient cannot be null"); - Assert.state(this.defaultAuthorizedClientManager, - "The client cannot be set when the constructor used is \"OAuth2AuthorizedClientArgumentResolver(OAuth2AuthorizedClientManager)\". " - + "Instead, use the constructor \"OAuth2AuthorizedClientArgumentResolver(ClientRegistrationRepository, OAuth2AuthorizedClientRepository)\"."); - updateDefaultAuthorizedClientManager(clientCredentialsTokenResponseClient); - } - - private void updateDefaultAuthorizedClientManager( - OAuth2AccessTokenResponseClient clientCredentialsTokenResponseClient) { - // @formatter:off - OAuth2AuthorizedClientProvider authorizedClientProvider = OAuth2AuthorizedClientProviderBuilder.builder() - .authorizationCode() - .refreshToken() - .clientCredentials((configurer) -> - configurer.accessTokenResponseClient(clientCredentialsTokenResponseClient) - ) - .password() - .build(); - // @formatter:on - ((DefaultOAuth2AuthorizedClientManager) this.authorizedClientManager) - .setAuthorizedClientProvider(authorizedClientProvider); - } - } diff --git a/oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/web/method/annotation/OAuth2AuthorizedClientArgumentResolverTests.java b/oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/web/method/annotation/OAuth2AuthorizedClientArgumentResolverTests.java index 16c485e7d6..310bf1b122 100644 --- a/oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/web/method/annotation/OAuth2AuthorizedClientArgumentResolverTests.java +++ b/oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/web/method/annotation/OAuth2AuthorizedClientArgumentResolverTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -42,7 +42,6 @@ import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider import org.springframework.security.oauth2.client.PasswordOAuth2AuthorizedClientProvider; import org.springframework.security.oauth2.client.annotation.RegisteredOAuth2AuthorizedClient; import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken; -import org.springframework.security.oauth2.client.endpoint.DefaultClientCredentialsTokenResponseClient; import org.springframework.security.oauth2.client.endpoint.OAuth2AccessTokenResponseClient; import org.springframework.security.oauth2.client.endpoint.OAuth2ClientCredentialsGrantRequest; import org.springframework.security.oauth2.client.endpoint.OAuth2PasswordGrantRequest; @@ -64,7 +63,6 @@ import org.springframework.web.context.request.ServletWebRequest; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; -import static org.assertj.core.api.Assertions.assertThatIllegalStateException; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; @@ -178,24 +176,6 @@ public class OAuth2AuthorizedClientArgumentResolverTests { assertThatIllegalArgumentException().isThrownBy(() -> new OAuth2AuthorizedClientArgumentResolver(null)); } - @Test - public void setClientCredentialsTokenResponseClientWhenClientIsNullThenThrowIllegalArgumentException() { - assertThatIllegalArgumentException() - .isThrownBy(() -> this.argumentResolver.setClientCredentialsTokenResponseClient(null)) - .withMessage("clientCredentialsTokenResponseClient cannot be null"); - } - - @Test - public void setClientCredentialsTokenResponseClientWhenNotDefaultAuthorizedClientManagerThenThrowIllegalStateException() { - assertThatIllegalStateException() - .isThrownBy(() -> this.argumentResolver - .setClientCredentialsTokenResponseClient(new DefaultClientCredentialsTokenResponseClient())) - .withMessage("The client cannot be set when the constructor used is " - + "\"OAuth2AuthorizedClientArgumentResolver(OAuth2AuthorizedClientManager)\". " - + "Instead, use the constructor \"OAuth2AuthorizedClientArgumentResolver(ClientRegistrationRepository, " - + "OAuth2AuthorizedClientRepository)\"."); - } - @Test public void supportsParameterWhenParameterTypeOAuth2AuthorizedClientThenTrue() { MethodParameter methodParameter = this.getMethodParameter("paramTypeAuthorizedClient",