From 99101bae5c932dc5f4acc4adcdd43ba3a53368bd Mon Sep 17 00:00:00 2001 From: Madhura Bhave Date: Tue, 3 Oct 2017 14:18:26 -0700 Subject: [PATCH] Remove AuthenticationManagerConfigurationListener Closes gh-10446 --- .../AuthenticationManagerConfiguration.java | 49 +------------------ .../SecurityAutoConfigurationTests.java | 16 ------ 2 files changed, 2 insertions(+), 63 deletions(-) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/AuthenticationManagerConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/AuthenticationManagerConfiguration.java index 9f539555a60..6fcdc2c5689 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/AuthenticationManagerConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/AuthenticationManagerConfiguration.java @@ -21,20 +21,13 @@ import java.util.UUID; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.springframework.beans.factory.NoSuchBeanDefinitionException; -import org.springframework.beans.factory.SmartInitializingSingleton; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationListener; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; -import org.springframework.security.authentication.AuthenticationEventPublisher; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationProvider; -import org.springframework.security.authentication.ProviderManager; import org.springframework.security.config.annotation.ObjectPostProcessor; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetailsService; @@ -52,6 +45,8 @@ import org.springframework.security.provisioning.InMemoryUserDetailsManager; */ @Configuration @ConditionalOnBean(ObjectPostProcessor.class) +@ConditionalOnMissingBean({ AuthenticationManager.class, AuthenticationProvider.class, + UserDetailsService.class }) @Order(0) public class AuthenticationManagerConfiguration { @@ -59,8 +54,6 @@ public class AuthenticationManagerConfiguration { .getLog(AuthenticationManagerConfiguration.class); @Bean - @ConditionalOnMissingBean({ AuthenticationManager.class, AuthenticationProvider.class, - UserDetailsService.class }) public InMemoryUserDetailsManager inMemoryUserDetailsManager() throws Exception { String password = UUID.randomUUID().toString(); logger.info(String.format("%n%nUsing default security password: %s%n", password)); @@ -68,42 +61,4 @@ public class AuthenticationManagerConfiguration { User.withUsername("user").password(password).roles().build()); } - @Bean - public AuthenticationManagerConfigurationListener authenticationManagerConfigurationListener() { - return new AuthenticationManagerConfigurationListener(); - } - - /** - * {@link ApplicationListener} to autowire the {@link AuthenticationEventPublisher} - * into the {@link AuthenticationManager}. - */ - protected static class AuthenticationManagerConfigurationListener - implements SmartInitializingSingleton { - - @Autowired - private AuthenticationEventPublisher eventPublisher; - - @Autowired - private ApplicationContext context; - - @Override - public void afterSingletonsInstantiated() { - try { - configureAuthenticationManager( - this.context.getBean(AuthenticationManager.class)); - } - catch (NoSuchBeanDefinitionException ex) { - // Ignore - } - } - - private void configureAuthenticationManager(AuthenticationManager manager) { - if (manager instanceof ProviderManager) { - ((ProviderManager) manager) - .setAuthenticationEventPublisher(this.eventPublisher); - } - } - - } - } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SecurityAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SecurityAutoConfigurationTests.java index d650394f72f..3a9956ac269 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SecurityAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/SecurityAutoConfigurationTests.java @@ -47,7 +47,6 @@ import org.springframework.security.authentication.ProviderManager; import org.springframework.security.authentication.TestingAuthenticationProvider; import org.springframework.security.authentication.TestingAuthenticationToken; import org.springframework.security.authentication.event.AbstractAuthenticationEvent; -import org.springframework.security.authentication.event.AuthenticationSuccessEvent; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @@ -146,21 +145,6 @@ public class SecurityAutoConfigurationTests { DelegatingFilterProxyRegistrationBean.class).getOrder()).isEqualTo(12345); } - @Test - public void testEventPublisherInjected() throws Exception { - this.context = new AnnotationConfigWebApplicationContext(); - this.context.setServletContext(new MockServletContext()); - this.context.register(TestAuthenticationManagerConfiguration.class, - SecurityAutoConfiguration.class, - PropertyPlaceholderAutoConfiguration.class); - this.context.refresh(); - AuthenticationListener listener = new AuthenticationListener(); - this.context.addApplicationListener(listener); - AuthenticationManager manager = this.context.getBean(AuthenticationManager.class); - manager.authenticate(new TestingAuthenticationToken("foo", "wrong")); - assertThat(listener.event).isInstanceOf(AuthenticationSuccessEvent.class); - } - @Test public void testDefaultUsernamePassword() throws Exception { this.context = new AnnotationConfigWebApplicationContext();