Remove AuthenticationManagerConfigurationListener
Closes gh-10446
This commit is contained in:
parent
9f1ed197d2
commit
99101bae5c
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue