With Spring Security 3 (and the XML files) seems like it was possible to customize the behavior on what happens when a basic authentication is successful or failed:

http://stackoverflow.com/questions/16734537/spring-security-3-http-basic-authentication-success-handler

With Spring Security 4, the pattern seems to have changed. To configure HTTP Basic Authentication for a web-service, WebSecurityConfigurerAdapter needs to be extended and overriding method configure(HttpSercurity http). For example, in this method we can enable HTTP Basic with code like:

        // Use Basic Authentication
        http.httpBasic();

        http.authorizeRequests()
                .antMatchers("/1/some_resource/**").hasAuthority("USER");

When I looked into what httpBasic does, I noticed that it uses HttpBasicConfigurer (final class) which has explicit instantiation of BasicAuthenticationFilter class:

BasicAuthenticationFilter basicAuthenticationFilter = new BasicAuthenticationFilter(authenticationManager, authenticationEntryPoint);

https://github.com/spring-projects/spring-security/blob/9654817fd85c5081c3874060ea30b9bec9a7934e/config/src/main/java/org/springframework/security/config/annotation/web/configurers/HttpBasicConfigurer.java#L166

The onSuccessfulAuthentication and onUnsuccessfulAuthentication methods on BasicAuthenticationFilter do nothing: https://github.com/spring-projects/spring-security/blob/9654817fd85c5081c3874060ea30b9bec9a7934e/web/src/main/java/org/springframework/security/web/authentication/www/BasicAuthenticationFilter.java#L259-L265

If I want to provide a customer behavior (for example: do something after 5 failed attempts), there is no way for me to customize what the call to method HttpSecurity.httpBasic() does. I wasn't able to find a place where I might implement AuthenticationSuccessHandler or AuthenticationFailureHandler.

I would either have to switch to the the way of Spring Security 3 or make a copy (since it is a final class) of HttpBasicConfigurer which instantiates my own CustomBasicAuthenticationFilter class.

Is there a plan in the final version of Spring Security 4.0 to have some customization of HTTP Basic Authentication?

Comment From: rwinch

You can extend the BasicAuthenticationFilter and insert it as shown below:

http
    .addFilter(new CustomBasicAuthenticationFIlter())
    ...

If your Filter does not extend BasicAuthenticationFilter, you need to give Spring Security instructions where to place the Filter. You can do this using the following:

http
    .addFilterBefore(new CustomBasicAuthenticationFIlter(), BasicAuthenticationFilter.class)
    ...

Comment From: mmladenovski

@rwinch , thank you for the clarification.

Comment From: wick-z

You can extend the BasicAuthenticationFilter and insert it as shown below:

java http .addFilter(new CustomBasicAuthenticationFIlter()) ...

If your Filter does not extend BasicAuthenticationFilter, you need to give Spring Security instructions where to place the Filter. You can do this using the following:

java http .addFilterBefore(new CustomBasicAuthenticationFIlter(), BasicAuthenticationFilter.class) ... Hi, I wonder if there is one way to setup a defualt basic authorization. Just like this in Feign @Bean public BasicAuthRequestInterceptor basicAuthRequestInterceptor() { return new BasicAuthRequestInterceptor(clientId, clientSecret); }