Class ServicioJwt

java.lang.Object
com.gestorrh.api.security.ServicioJwt

@Service public class ServicioJwt extends Object
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 Details

    • claveSecreta

      @Value("${jwt.secret}") private String 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 expiracionJwt
      Tiempo 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

      public String generarToken(String email, Map<String,Object> datosExtra)
      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 mapa datosExtra.

      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

      private SecretKey obtenerClaveFirma()
      Transforma la clave secreta codificada en Base64 en una clave criptográfica adecuada para algoritmos HMAC.
      Returns:
      Una SecretKey para realizar la firma o verificación de los tokens.
    • extraerEmail

      public String extraerEmail(String token)
      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

      public String extraerRol(String token)
      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

      public Long extraerId(String token)
      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, o null si no está presente o no es válido.
    • esTokenValido

      public boolean esTokenValido(String token)
      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:
      true si el token es válido y está vigente, false en caso contrario.
    • extraerTodosLosClaims

      private io.jsonwebtoken.Claims extraerTodosLosClaims(String token)
      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 Claims que contiene toda la información del token.