Commit 3a95a753 authored by Madhura Bhave's avatar Madhura Bhave

UserDetailsService not created when OAuth configured

Fixes gh-10531
parent 777cbe3c
...@@ -61,6 +61,7 @@ public class AuthenticationManagerConfiguration { ...@@ -61,6 +61,7 @@ public class AuthenticationManagerConfiguration {
.getLog(AuthenticationManagerConfiguration.class); .getLog(AuthenticationManagerConfiguration.class);
@Bean @Bean
@ConditionalOnMissingBean(type = "org.springframework.security.oauth2.client.registration.ClientRegistrationRepository")
public InMemoryUserDetailsManager inMemoryUserDetailsManager( public InMemoryUserDetailsManager inMemoryUserDetailsManager(
SecurityProperties properties, SecurityProperties properties,
ObjectProvider<PasswordEncoder> passwordEncoder) throws Exception { ObjectProvider<PasswordEncoder> passwordEncoder) throws Exception {
......
...@@ -26,6 +26,7 @@ import org.springframework.context.annotation.Configuration; ...@@ -26,6 +26,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
...@@ -68,6 +69,14 @@ public class AuthenticationManagerConfigurationTests { ...@@ -68,6 +69,14 @@ public class AuthenticationManagerConfigurationTests {
testPasswordEncoding(TestConfigWithPasswordEncoder.class, "secret", "secret"); testPasswordEncoding(TestConfigWithPasswordEncoder.class, "secret", "secret");
} }
@Test
public void userDetailsServiceWhenClientRegistrationRepositoryBeanPresent() {
this.contextRunner
.withUserConfiguration(TestConfigWithClientRegistrationRepository.class,
AuthenticationManagerConfiguration.class)
.run(((context) -> assertThat(context).doesNotHaveBean(InMemoryUserDetailsManager.class)));
}
private void testPasswordEncoding(Class<?> configClass, String providedPassword, private void testPasswordEncoding(Class<?> configClass, String providedPassword,
String expectedPassword) { String expectedPassword) {
this.contextRunner this.contextRunner
...@@ -101,4 +110,15 @@ public class AuthenticationManagerConfigurationTests { ...@@ -101,4 +110,15 @@ public class AuthenticationManagerConfigurationTests {
} }
@Configuration
@Import(TestSecurityConfiguration.class)
protected static class TestConfigWithClientRegistrationRepository {
@Bean
public ClientRegistrationRepository clientRegistrationRepository() {
return mock(ClientRegistrationRepository.class);
}
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment