|
21 | 21 | import org.apache.commons.logging.Log;
|
22 | 22 | import org.apache.commons.logging.LogFactory;
|
23 | 23 |
|
24 |
| -import org.springframework.beans.factory.NoSuchBeanDefinitionException; |
25 |
| -import org.springframework.beans.factory.SmartInitializingSingleton; |
26 |
| -import org.springframework.beans.factory.annotation.Autowired; |
27 | 24 | import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
28 | 25 | import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
29 |
| -import org.springframework.context.ApplicationContext; |
30 |
| -import org.springframework.context.ApplicationListener; |
31 | 26 | import org.springframework.context.annotation.Bean;
|
32 | 27 | import org.springframework.context.annotation.Configuration;
|
33 | 28 | import org.springframework.core.annotation.Order;
|
34 |
| -import org.springframework.security.authentication.AuthenticationEventPublisher; |
35 | 29 | import org.springframework.security.authentication.AuthenticationManager;
|
36 | 30 | import org.springframework.security.authentication.AuthenticationProvider;
|
37 |
| -import org.springframework.security.authentication.ProviderManager; |
38 | 31 | import org.springframework.security.config.annotation.ObjectPostProcessor;
|
39 | 32 | import org.springframework.security.core.userdetails.User;
|
40 | 33 | import org.springframework.security.core.userdetails.UserDetailsService;
|
|
52 | 45 | */
|
53 | 46 | @Configuration
|
54 | 47 | @ConditionalOnBean(ObjectPostProcessor.class)
|
| 48 | +@ConditionalOnMissingBean({ AuthenticationManager.class, AuthenticationProvider.class, |
| 49 | + UserDetailsService.class }) |
55 | 50 | @Order(0)
|
56 | 51 | public class AuthenticationManagerConfiguration {
|
57 | 52 |
|
58 | 53 | private static final Log logger = LogFactory
|
59 | 54 | .getLog(AuthenticationManagerConfiguration.class);
|
60 | 55 |
|
61 | 56 | @Bean
|
62 |
| - @ConditionalOnMissingBean({ AuthenticationManager.class, AuthenticationProvider.class, |
63 |
| - UserDetailsService.class }) |
64 | 57 | public InMemoryUserDetailsManager inMemoryUserDetailsManager() throws Exception {
|
65 | 58 | String password = UUID.randomUUID().toString();
|
66 | 59 | logger.info(String.format("%n%nUsing default security password: %s%n", password));
|
67 | 60 | return new InMemoryUserDetailsManager(
|
68 | 61 | User.withUsername("user").password(password).roles().build());
|
69 | 62 | }
|
70 | 63 |
|
71 |
| - @Bean |
72 |
| - public AuthenticationManagerConfigurationListener authenticationManagerConfigurationListener() { |
73 |
| - return new AuthenticationManagerConfigurationListener(); |
74 |
| - } |
75 |
| - |
76 |
| - /** |
77 |
| - * {@link ApplicationListener} to autowire the {@link AuthenticationEventPublisher} |
78 |
| - * into the {@link AuthenticationManager}. |
79 |
| - */ |
80 |
| - protected static class AuthenticationManagerConfigurationListener |
81 |
| - implements SmartInitializingSingleton { |
82 |
| - |
83 |
| - @Autowired |
84 |
| - private AuthenticationEventPublisher eventPublisher; |
85 |
| - |
86 |
| - @Autowired |
87 |
| - private ApplicationContext context; |
88 |
| - |
89 |
| - @Override |
90 |
| - public void afterSingletonsInstantiated() { |
91 |
| - try { |
92 |
| - configureAuthenticationManager( |
93 |
| - this.context.getBean(AuthenticationManager.class)); |
94 |
| - } |
95 |
| - catch (NoSuchBeanDefinitionException ex) { |
96 |
| - // Ignore |
97 |
| - } |
98 |
| - } |
99 |
| - |
100 |
| - private void configureAuthenticationManager(AuthenticationManager manager) { |
101 |
| - if (manager instanceof ProviderManager) { |
102 |
| - ((ProviderManager) manager) |
103 |
| - .setAuthenticationEventPublisher(this.eventPublisher); |
104 |
| - } |
105 |
| - } |
106 |
| - |
107 |
| - } |
108 |
| - |
109 | 64 | }
|
0 commit comments