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.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
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.ConditionalOnBean;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
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.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.core.annotation.Order;
|
import org.springframework.core.annotation.Order;
|
||||||
import org.springframework.security.authentication.AuthenticationEventPublisher;
|
|
||||||
import org.springframework.security.authentication.AuthenticationManager;
|
import org.springframework.security.authentication.AuthenticationManager;
|
||||||
import org.springframework.security.authentication.AuthenticationProvider;
|
import org.springframework.security.authentication.AuthenticationProvider;
|
||||||
import org.springframework.security.authentication.ProviderManager;
|
|
||||||
import org.springframework.security.config.annotation.ObjectPostProcessor;
|
import org.springframework.security.config.annotation.ObjectPostProcessor;
|
||||||
import org.springframework.security.core.userdetails.User;
|
import org.springframework.security.core.userdetails.User;
|
||||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||||
|
|
@ -52,6 +45,8 @@ import org.springframework.security.provisioning.InMemoryUserDetailsManager;
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
@ConditionalOnBean(ObjectPostProcessor.class)
|
@ConditionalOnBean(ObjectPostProcessor.class)
|
||||||
|
@ConditionalOnMissingBean({ AuthenticationManager.class, AuthenticationProvider.class,
|
||||||
|
UserDetailsService.class })
|
||||||
@Order(0)
|
@Order(0)
|
||||||
public class AuthenticationManagerConfiguration {
|
public class AuthenticationManagerConfiguration {
|
||||||
|
|
||||||
|
|
@ -59,8 +54,6 @@ public class AuthenticationManagerConfiguration {
|
||||||
.getLog(AuthenticationManagerConfiguration.class);
|
.getLog(AuthenticationManagerConfiguration.class);
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnMissingBean({ AuthenticationManager.class, AuthenticationProvider.class,
|
|
||||||
UserDetailsService.class })
|
|
||||||
public InMemoryUserDetailsManager inMemoryUserDetailsManager() throws Exception {
|
public InMemoryUserDetailsManager inMemoryUserDetailsManager() throws Exception {
|
||||||
String password = UUID.randomUUID().toString();
|
String password = UUID.randomUUID().toString();
|
||||||
logger.info(String.format("%n%nUsing default security password: %s%n", password));
|
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());
|
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.TestingAuthenticationProvider;
|
||||||
import org.springframework.security.authentication.TestingAuthenticationToken;
|
import org.springframework.security.authentication.TestingAuthenticationToken;
|
||||||
import org.springframework.security.authentication.event.AbstractAuthenticationEvent;
|
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.authentication.builders.AuthenticationManagerBuilder;
|
||||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||||
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
||||||
|
|
@ -146,21 +145,6 @@ public class SecurityAutoConfigurationTests {
|
||||||
DelegatingFilterProxyRegistrationBean.class).getOrder()).isEqualTo(12345);
|
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
|
@Test
|
||||||
public void testDefaultUsernamePassword() throws Exception {
|
public void testDefaultUsernamePassword() throws Exception {
|
||||||
this.context = new AnnotationConfigWebApplicationContext();
|
this.context = new AnnotationConfigWebApplicationContext();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue