Skip to content

Commit 31cdfd5

Browse files
bartoszJaszczakwilkinsona
authored andcommitted
Make UserDetailsService back off with AuthManagerResolver bean
See gh-28361
1 parent 791f3f5 commit 31cdfd5

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/servlet/UserDetailsServiceAutoConfiguration.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.springframework.context.annotation.Configuration;
3333
import org.springframework.context.annotation.Lazy;
3434
import org.springframework.security.authentication.AuthenticationManager;
35+
import org.springframework.security.authentication.AuthenticationManagerResolver;
3536
import org.springframework.security.authentication.AuthenticationProvider;
3637
import org.springframework.security.config.annotation.ObjectPostProcessor;
3738
import org.springframework.security.core.userdetails.User;
@@ -56,7 +57,8 @@
5657
@ConditionalOnClass(AuthenticationManager.class)
5758
@ConditionalOnBean(ObjectPostProcessor.class)
5859
@ConditionalOnMissingBean(
59-
value = { AuthenticationManager.class, AuthenticationProvider.class, UserDetailsService.class },
60+
value = { AuthenticationManager.class, AuthenticationProvider.class, UserDetailsService.class,
61+
AuthenticationManagerResolver.class },
6062
type = { "org.springframework.security.oauth2.jwt.JwtDecoder",
6163
"org.springframework.security.oauth2.server.resource.introspection.OpaqueTokenIntrospector" })
6264
public class UserDetailsServiceAutoConfiguration {

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/servlet/UserDetailsServiceAutoConfigurationTests.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,7 @@
3030
import org.springframework.context.annotation.Bean;
3131
import org.springframework.context.annotation.Configuration;
3232
import org.springframework.context.annotation.Import;
33-
import org.springframework.security.authentication.AuthenticationManager;
34-
import org.springframework.security.authentication.AuthenticationProvider;
35-
import org.springframework.security.authentication.ProviderManager;
36-
import org.springframework.security.authentication.TestingAuthenticationProvider;
37-
import org.springframework.security.authentication.TestingAuthenticationToken;
33+
import org.springframework.security.authentication.*;
3834
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
3935
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
4036
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@@ -155,6 +151,12 @@ void generatedPasswordShouldNotBePrintedIfAuthenticationManagerBuilderIsUsed(Cap
155151
.run(((context) -> assertThat(output).doesNotContain("Using generated security password: ")));
156152
}
157153

154+
@Test
155+
void userDetailsServiceShouldNotBePresentWhenAuthenticationManagerResolverBeanIsPresent() {
156+
this.contextRunner.withUserConfiguration(TestAuthenticationManagerResolverConfiguration.class)
157+
.run(((context) -> assertThat(context).doesNotHaveBean(InMemoryUserDetailsManager.class)));
158+
}
159+
158160
private void testPasswordEncoding(Class<?> configClass, String providedPassword, String expectedPassword) {
159161
this.contextRunner.withUserConfiguration(configClass)
160162
.withPropertyValues("spring.security.user.password=" + providedPassword).run(((context) -> {
@@ -266,4 +268,14 @@ protected void configure(AuthenticationManagerBuilder auth) throws Exception {
266268

267269
}
268270

271+
@Configuration(proxyBeanMethods = false)
272+
static class TestAuthenticationManagerResolverConfiguration {
273+
274+
@Bean
275+
AuthenticationManagerResolver<?> myAuthenticationManagerResolver() {
276+
return mock(AuthenticationManagerResolver.class);
277+
}
278+
279+
}
280+
269281
}

0 commit comments

Comments
 (0)