Spring Security authenification failure event


For security reasons you need limit failure login attempts in your application, simply you can do it using counter, that updates a count in the DB. Next I will show how to handle this event in Spring Security

1) First aproach is to use AuthentificationFailureHandler:

public class AuthentificationListener implements AuthenticationFailureHandler{

class:
    @Override
    public void onAuthenticationFailure(HttpServletRequest request,
             HttpServletResponse response, AuthenticationException ae)
             throws IOException, ServletException {
            UsernamePasswordAuthenticationToken user =(UsernamePasswordAuthenticationToken)ae.getAuthentication();

         // user contains required data
          response.sendRedirect("login?error=true");
}

spring-confix.xml, need to specify authentication-failure-handler-ref bean:
    <security:http auto-config="false" use-expressions="true" access-denied-page="/denied">
        <security:intercept-url pattern="/admin/**"    access="hasRole('ROLE_ADMIN')" />
        <security:form-login  login-page="/login" authentication-failure-handler-ref="myAuthErrorHandler" default-target-url="/test/success"/>          
        <security:logout invalidate-session="true" logout-success-url="/login" logout-url="/logout" />
    </security:http>



2) Other aproach, is much more simple, you need to listen AuthenticationFailure Event:
@Component
public class UserAuthenticationErrorHandler implements ApplicationListener<AuthenticationFailureBadCredentialsEvent> {
    @Override
    public void onApplicationEvent(AuthenticationFailureBadCredentialsEvent event) {

        Object userName = event.getAuthentication().getPrincipal();
        Object credentials = event.getAuthentication().getCredentials();
        System.out.println("Failed login using USERNAME " + userName);
       System.out.println("Failed login using PASSWORD " + credentials);
    }
}

Sursa
2012-07-12 21:26:00



Comenteaza





Ultimele 25 posturi adăugate

08:54:11Ștefan Iamandi: mii de surse media au publicat informații de la Congresul OIV din Moldova —» Fine Wine
06:01:00ÎN AȘTEPTARE 4/11 —» Leo Butnaru
16:03:07Fără Titlu —» Путепроводные Заметки
07:40:3510 motive pentru a te înscrie la Summer English Academy (5-12 iulie) —» Moldova Creștină
05:09:00ACOLO UNDE ZIUA SE NUMEȘTE ODOR —» Leo Butnaru
03:14:51Fără Titlu —» Путепроводные Заметки
15:24:41Fără Titlu —» Путепроводные Заметки
17:44:11Mafia lemnului atacă și pe litoral —» Curaj.TV | Media alternativă
14:11:38Fără Titlu —» Путепроводные Заметки
04:18:003 DIN 11 —» Leo Butnaru
17:04:29Fără Titlu —» Путепроводные Заметки
17:04:29Fără Titlu —» Путепроводные Заметки
08:29:40Guest post: top 5 spumante recomandate de stagiara Fine Wine  —» Fine Wine
05:13:00EU, PERSONAJUL —» Leo Butnaru
00:49:08Fără Titlu —» Путепроводные Заметки
20:27:49Fără Titlu —» Путепроводные Заметки
18:22:13Fără Titlu —» Путепроводные Заметки
18:02:00Luna Noua în Rac - 25 iunie 2025 —» codul omega
14:53:54Fără Titlu —» Путепроводные Заметки
14:00:00Îți amintești? Ai fost acolo când vocea creației era sunet pur, iar gândul tău aprindea lumina în cristale —» codul omega
13:39:17Fără Titlu —» Путепроводные Заметки
11:48:00VOLUMUL 2 DIN 11 —» Leo Butnaru
11:16:39Relevanța – noua formă de supraviețuire? —» Efrosnatalita’s Blog
08:04:26Nou: Castel Mimi Sânzienele 2024 —» Fine Wine
05:06:00FURT INTERNAȚIONAL ÎN ARENA OLIMPICĂ! —» Leo Butnaru