Remove AuthenticationManagerConfigurationListener

Closes gh-10446
This commit is contained in:
Madhura Bhave 2017-10-03 14:18:26 -07:00
parent 9f1ed197d2
commit 99101bae5c
2 changed files with 2 additions and 63 deletions

View File

@ -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);
}
}
}
}

View File

@ -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();