Praca nad przejściem od konfiguracji xml bezpieczeństwa wiosennego do Java Config w Spring Security.Wiosenne uruchamianie, nadpisanie zabezpieczenia sprężyny UserDetailsService
W mojej klasie SecurityConfiguration, która rozszerza WebSecurityConfigurerAdapter. Jednak problem polega na tym, że parametr userDetailsService nie jest używany przez filtry bezpieczeństwa, w szczególności właściwość UsernamePasswordAuthenticationFilter. Spojrzałem na startup i wygląda na to, że nie jest on tworzony, zanim Spring boots stworzy domyślny InMemoryUserDetailsManager.
@Configuration
@EnableWebMvcSecurity
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http)
throws Exception {
http.userDetailsService(userDetailsService);
}
}
Próbowałem również przesłonić userDetailsServiceBean i userDetailsService w tej klasie przy użyciu niestandardowych wstrzykuje ApplicationUserDetailsService.
@Bean(name="myUserDetailsBean")
@Override
public UserDetailsService userDetailsServiceBean() {
return userDetailsService;
}
@Override
public UserDetailsService userDetailsService() {
return userDetailsService;
}
Jednak gdy próbuję zastąpić authenticationManagerBean wygląda na to wywołuje moją konfigurację przed inicjuje konfiguracja rozruchu wiosna ale zgłasza błąd (poniżej), że istnieje odwołanie cykliczne podczas inicjalizacji UsernamePasswordAuthenticationFilter. Czy naprawdę potrzebuję zastąpić uwierzytelnianieManagerBean, ponieważ muszę zdefiniować, co idzie do 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
Pomysły?