Autenticacion Shiro - Tensho97/Aprende-a-Aprender GitHub Wiki
La autenticación es el proceso de verificación de una identidad, esto es, probar que el usuario actual es quien dice ser. Para probar su identidad, los usuarios necesitarán aportar información que los identifique, y que el sistema la entienda y confíe en ella. Existen dos tipos de información para autenticarse:
-
Principal o 'atributos identificativos': puede ser cualquier cosa que identifique a ese sujeto, como el nombre, apellidos, dirección de correo electrónico...
-
Credencial: usualmente se refiere a información secreta conocida solamente por el 'Subject'. Algunos comunes son las contraseñas, huella digital o escaneo de retina.
El ejemplo más común de un par Principal/Credencial es el nombre de usuario y contraseña. Un ejemplo en código:
- Creamos el token
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
token.setRememberMe(true);
Si un token es recordado (rememberMe = true), significa que su información Principal no está vacía. Esta identidad es recordada de una sesión anterior y durante la actual. En cambio, si un token es autenticado (Authenticated = true), signfica que el login ha funcionado bien y se ha autenticado en la sesión actual.
- Luego de que las credenciales se han guardado en el token, lo enviaremos a Shiro para el proceso de autenticación
Subject currentUser = SecurityUtils.getSubject();
currentUser.login(token);
- Controlamos que pase por el login correctamente con un try/catch. AuthenticationException es una excepción de tipo Runtime de Shiro, que controla por qué se ha producido el error de autenticación.
try {
currentUser.login(token);
} catch ( UnknownAccountException uae ) { ...
} catch ( IncorrectCredentialsException ice ) { ...
} catch ( LockedAccountException lae ) { ...
} catch ( ExcessiveAttemptsException eae ) { ...
} ... catch your own ...
} catch ( AuthenticationException ae ) {
//unexpected error?
}
Autora: Vanesa