Package com.gestorrh.api.security
Class ServicioJwt
java.lang.Object
com.gestorrh.api.security.ServicioJwt
Servicio encargado de la gestión integral de JSON Web Tokens (JWT).
Proporciona funcionalidades para la generación de tokens tras una autenticación exitosa, así como la validación y extracción de información (claims) de tokens recibidos en peticiones posteriores.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate StringClave secreta utilizada para la firma de los tokens JWT.private longTiempo de expiración del token JWT en milisegundos. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanesTokenValido(String token) Valida la integridad y vigencia de un token JWT.extraerEmail(String token) Extrae el identificador del usuario (subject) de un token JWT.Recupera el identificador numérico único (ID) del usuario desde el token JWT.extraerRol(String token) Recupera el rol asignado al usuario desde el payload del token JWT.private io.jsonwebtoken.ClaimsextraerTodosLosClaims(String token) Método interno para parsear el token JWT y recuperar todos sus claims (información).generarToken(String email, Map<String, Object> datosExtra) Genera un nuevo Token JWT para un usuario específico incluyendo información personalizada.private SecretKeyTransforma la clave secreta codificada en Base64 en una clave criptográfica adecuada para algoritmos HMAC.
-
Field Details
-
claveSecreta
Clave secreta utilizada para la firma de los tokens JWT. Se inyecta desde la configuración de la aplicación (Base64). -
expiracionJwt
@Value("${jwt.expiration}") private long expiracionJwtTiempo de expiración del token JWT en milisegundos. Se inyecta desde la configuración de la aplicación.
-
-
Constructor Details
-
ServicioJwt
public ServicioJwt()
-
-
Method Details
-
generarToken
Genera un nuevo Token JWT para un usuario específico incluyendo información personalizada.El token incluirá el correo del usuario como
subject, la fecha de emisión, la fecha de expiración y cualquier otro dato adicional proporcionado en el mapadatosExtra.- Parameters:
email- El correo electrónico del usuario, que servirá como identificador principal en el token.datosExtra- Mapa con información adicional que se desea incluir en el payload del token (ej: id, rol).- Returns:
- Una cadena de texto que representa el token JWT compactado y firmado.
-
obtenerClaveFirma
Transforma la clave secreta codificada en Base64 en una clave criptográfica adecuada para algoritmos HMAC.- Returns:
- Una
SecretKeypara realizar la firma o verificación de los tokens.
-
extraerEmail
Extrae el identificador del usuario (subject) de un token JWT.- Parameters:
token- El token JWT del que se desea extraer la información.- Returns:
- El correo electrónico del usuario contenido en el token.
-
extraerRol
Recupera el rol asignado al usuario desde el payload del token JWT.- Parameters:
token- El token JWT del que se desea extraer el rol.- Returns:
- El nombre del rol del usuario.
-
extraerId
Recupera el identificador numérico único (ID) del usuario desde el token JWT.- Parameters:
token- El token JWT del que se desea extraer el ID.- Returns:
- El ID del usuario como un
Long, onullsi no está presente o no es válido.
-
esTokenValido
Valida la integridad y vigencia de un token JWT.Comprueba que la firma del token sea correcta utilizando la clave secreta y que la fecha de expiración no se haya superado.
- Parameters:
token- El token JWT que se desea validar.- Returns:
truesi el token es válido y está vigente,falseen caso contrario.
-
extraerTodosLosClaims
Método interno para parsear el token JWT y recuperar todos sus claims (información).Utiliza la clave de firma para verificar la autenticidad del token antes de extraer su payload.
- Parameters:
token- El token JWT a procesar.- Returns:
- Un objeto
Claimsque contiene toda la información del token.
-