diff --git a/config/src/main/java/org/springframework/security/config/annotation/web/configuration/OAuth2ClientConfiguration.java b/config/src/main/java/org/springframework/security/config/annotation/web/configuration/OAuth2ClientConfiguration.java index 24bd18f75a5..13c9a1b3c07 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/web/configuration/OAuth2ClientConfiguration.java +++ b/config/src/main/java/org/springframework/security/config/annotation/web/configuration/OAuth2ClientConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2023 the original author or authors. + * Copyright 2002-2024 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. @@ -29,7 +29,6 @@ import org.springframework.beans.factory.BeanInitializationException; import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.beans.factory.ObjectProvider; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.support.BeanDefinitionBuilder; @@ -118,11 +117,19 @@ OAuth2AuthorizedClientManagerRegistrar authorizedClientManagerRegistrar() { @Configuration(proxyBeanMethods = false) static class OAuth2ClientWebMvcSecurityConfiguration implements WebMvcConfigurer { - private OAuth2AuthorizedClientManager authorizedClientManager; + private final OAuth2AuthorizedClientManager authorizedClientManager; - private SecurityContextHolderStrategy securityContextHolderStrategy; + private final ObjectProvider securityContextHolderStrategy; - private OAuth2AuthorizedClientManagerRegistrar authorizedClientManagerRegistrar; + private final OAuth2AuthorizedClientManagerRegistrar authorizedClientManagerRegistrar; + + OAuth2ClientWebMvcSecurityConfiguration(ObjectProvider authorizedClientManager, + ObjectProvider securityContextHolderStrategy, + OAuth2AuthorizedClientManagerRegistrar authorizedClientManagerRegistrar) { + this.authorizedClientManager = authorizedClientManager.getIfUnique(); + this.securityContextHolderStrategy = securityContextHolderStrategy; + this.authorizedClientManagerRegistrar = authorizedClientManagerRegistrar; + } @Override public void addArgumentResolvers(List argumentResolvers) { @@ -130,31 +137,11 @@ public void addArgumentResolvers(List argumentRes if (authorizedClientManager != null) { OAuth2AuthorizedClientArgumentResolver resolver = new OAuth2AuthorizedClientArgumentResolver( authorizedClientManager); - if (this.securityContextHolderStrategy != null) { - resolver.setSecurityContextHolderStrategy(this.securityContextHolderStrategy); - } + this.securityContextHolderStrategy.ifAvailable(resolver::setSecurityContextHolderStrategy); argumentResolvers.add(resolver); } } - @Autowired(required = false) - void setAuthorizedClientManager(List authorizedClientManagers) { - if (authorizedClientManagers.size() == 1) { - this.authorizedClientManager = authorizedClientManagers.get(0); - } - } - - @Autowired(required = false) - void setSecurityContextHolderStrategy(SecurityContextHolderStrategy strategy) { - this.securityContextHolderStrategy = strategy; - } - - @Autowired - void setAuthorizedClientManagerRegistrar( - OAuth2AuthorizedClientManagerRegistrar authorizedClientManagerRegistrar) { - this.authorizedClientManagerRegistrar = authorizedClientManagerRegistrar; - } - private OAuth2AuthorizedClientManager getAuthorizedClientManager() { if (this.authorizedClientManager != null) { return this.authorizedClientManager; diff --git a/config/src/main/java/org/springframework/security/config/annotation/web/reactive/ReactiveOAuth2ClientConfiguration.java b/config/src/main/java/org/springframework/security/config/annotation/web/reactive/ReactiveOAuth2ClientConfiguration.java index 07808221f82..7432a9c565e 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/web/reactive/ReactiveOAuth2ClientConfiguration.java +++ b/config/src/main/java/org/springframework/security/config/annotation/web/reactive/ReactiveOAuth2ClientConfiguration.java @@ -30,7 +30,6 @@ import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.ObjectProvider; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.BeanDefinitionRegistry; @@ -93,9 +92,16 @@ ReactiveOAuth2AuthorizedClientManagerRegistrar authorizedClientManagerRegistrar( @Configuration(proxyBeanMethods = false) static class OAuth2ClientWebFluxSecurityConfiguration implements WebFluxConfigurer { - private ReactiveOAuth2AuthorizedClientManager authorizedClientManager; + private final ReactiveOAuth2AuthorizedClientManager authorizedClientManager; - private ReactiveOAuth2AuthorizedClientManagerRegistrar authorizedClientManagerRegistrar; + private final ReactiveOAuth2AuthorizedClientManagerRegistrar authorizedClientManagerRegistrar; + + OAuth2ClientWebFluxSecurityConfiguration( + ObjectProvider authorizedClientManager, + ReactiveOAuth2AuthorizedClientManagerRegistrar authorizedClientManagerRegistrar) { + this.authorizedClientManager = authorizedClientManager.getIfUnique(); + this.authorizedClientManagerRegistrar = authorizedClientManagerRegistrar; + } @Override public void configureArgumentResolvers(ArgumentResolverConfigurer configurer) { @@ -105,19 +111,6 @@ public void configureArgumentResolvers(ArgumentResolverConfigurer configurer) { } } - @Autowired(required = false) - void setAuthorizedClientManager(List authorizedClientManager) { - if (authorizedClientManager.size() == 1) { - this.authorizedClientManager = authorizedClientManager.get(0); - } - } - - @Autowired - void setAuthorizedClientManagerRegistrar( - ReactiveOAuth2AuthorizedClientManagerRegistrar authorizedClientManagerRegistrar) { - this.authorizedClientManagerRegistrar = authorizedClientManagerRegistrar; - } - private ReactiveOAuth2AuthorizedClientManager getAuthorizedClientManager() { if (this.authorizedClientManager != null) { return this.authorizedClientManager;