Lavorare sullo spostamento da Xml di sicurezza di sicurezza a Java Config in Spring Security.Avvio a molla, esclusione di sicurezza a molla UserDetailsService
Nella classe SecurityConfiguration che estende WebSecurityConfigurerAdapter. Tuttavia, il problema è che userDetailsService non viene utilizzato dai filtri di sicurezza in particolare UsernamePasswordAuthenticationFilter. Ho guardato l'avvio e sembra che questo non sia stato creato prima che Spring boots crei il predefinito InMemoryUserDetailsManager.
@Configuration
@EnableWebMvcSecurity
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http)
throws Exception {
http.userDetailsService(userDetailsService);
}
}
ho anche cercato di ignorare l'userDetailsServiceBean e userDetailsService in questa classe secondo la consuetudine iniettato ApplicationUserDetailsService.
@Bean(name="myUserDetailsBean")
@Override
public UserDetailsService userDetailsServiceBean() {
return userDetailsService;
}
@Override
public UserDetailsService userDetailsService() {
return userDetailsService;
}
Tuttavia, quando si tenta di ignorare l'authenticationManagerBean sembra che invoca la mia configurazione prima che la configurazione di avvio di primavera inizializza ma genera un errore (di seguito) che v'è un riferimento circolare durante l'inizializzazione del UsernamePasswordAuthenticationFilter. Ho davvero bisogno di sovrascrivere l'authenticationManagerBean perché devo definire cosa va inserito in UsernamePasswordAuthenticationFilter.
@Bean(name="myAuthenticationManager")
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
..
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter]: Circular reference involving containing bean 'securityBeansConfiguration' - consider declaring the factory method as static for independence from its containing instance. Factory method 'usernamePasswordAuthenticationFilter' threw exception; nested exception is java.lang.IllegalArgumentException: successHandler cannot be null
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE]
... 70 common frames omitted
idee?