Arbeiten an der Migration von Frühjahr Sicherheit XML-Konfiguration auf Java Config in Spring Security.Spring Boot, Frühling Sicherheit Override UserDetailsService
In meiner Klasse SecurityConfiguration erweitert WebSecurityConfigurerAdapter. Das Problem besteht jedoch darin, dass der userDetailsService nicht von den Sicherheitsfiltern speziell von UsernamePasswordAuthenticationFilter verwendet wird. Ich schaute auf den Start und es scheint, dass dies nicht erstellt wird, bevor Spring startet den Standard InMemoryUserDetailsManager.
@Configuration
@EnableWebMvcSecurity
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http)
throws Exception {
http.userDetailsService(userDetailsService);
}
}
Ich habe auch versucht, die userDetailsServiceBean und userDetailsService in dieser Klasse außer Kraft zu setzen, die individuelle Verwendung injiziert ApplicationUserDetailsService.
@Bean(name="myUserDetailsBean")
@Override
public UserDetailsService userDetailsServiceBean() {
return userDetailsService;
}
@Override
public UserDetailsService userDetailsService() {
return userDetailsService;
}
Allerdings, wenn ich versuche, die authenticationManagerBean außer Kraft zu setzen sieht es aus wie es meine Konfiguration aufruft, bevor die Feder Boot-Konfiguration initialisiert, aber es wirft einen Fehler (siehe unten), dass es eine zirkuläre Referenz ist, wenn die UsernamePasswordAuthenticationFilter initialisiert. Muss ich wirklich die AuthenticationManagerBean überschreiben, weil ich definieren muss, was in den UsernamePasswordAuthenticationFilter geht.
@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
Ideen?