I am trying to create my own user password authentication filter, because I need to check passwords from two different sources. Im using Spring Boot 1.2.1 and Java configuration. Deployment Error
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'customUsernamePasswordAuthenticationFilter' defined in file [/Users/rjmilitante/Documents/eclipse-workspace/login-service/bin/com/elsevier/eols/loginservice/CustomUsernamePasswordAuthenticationFilter.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: authenticationManager must be specified … Caused by: java.lang.IllegalArgumentException: authenticationManager must be specified
I'm not sure what I am missing. I am trying to set authenticationManager for this filter in my SecurityConfig. My code looks like
my filter:
@Component public class CustomUsernamePasswordAuthenticationFilter extends AbstractAuthenticationProcessingFilter { public CustomUsernamePasswordAuthenticationFilter(RequestMatcher requiresAuthenticationRequestMatcher) { super(requiresAuthenticationRequestMatcher); // TODO Auto-generated constructor stub } public CustomUsernamePasswordAuthenticationFilter() { super(new AntPathRequestMatcher("/login","POST")); // TODO Auto-generated constructor stub } public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException { // String dbValue = request.getParameter("dbParam"); // request.getSession().setAttribute("dbValue", dbValue); System.out.println("attempting to authentificate"); while (request.getAttributeNames().hasMoreElements()) { String e = (String) request.getAttributeNames().nextElement(); System.out.println("param name : " + e + " and param value : " + request.getAttribute(e)); } return null; } }
my security configuration:
@Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true) public class SecurityConfig extends WebSecurityConfigurerAdapter{ @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } @Bean(name="loginService") public LoginService loginService(){ return new LoginServiceImpl(); } @Bean( name="myAuthenticationManager") @Override public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } @Bean CustomUsernamePasswordAuthenticationFilter customUsernamePasswordAuthenticationFilter() throws Exception { CustomUsernamePasswordAuthenticationFilter customUsernamePasswordAuthenticationFilter = new CustomUsernamePasswordAuthenticationFilter(); customUsernamePasswordAuthenticationFilter.setAuthenticationManager(authenticationManagerBean()); return customUsernamePasswordAuthenticationFilter; } @Autowired private myAuthenticationProvider myAuthenticationProvider; protected void configure(HttpSecurity http) throws Exception { http.csrf().disable() .authorizeRequests() .anyRequest().authenticated() .and() ; } public void configure(AuthenticationManagerBuilder auth) throws Exception { auth.authenticationProvider(myAuthenticationProvider); } }
Can anyone take a look? not sure what with him.
source share