JWT

Un JSON Web Token (JWT) es un estándar abierto (RFC 7519) Un JSON Web Token (JWT) es un estándar abierto (RFC 7519) para intercambiar información de manera segura entre dos partes, como un cliente y un servidor. Aunque su uso más común es para la Autenticación, también se utiliza para otros fines, como la autorización y la comunicación segura entre microservicios. La información está codificada como un objeto JSON que se puede verificar y firmar digitalmente.


Partes principales de un JWT

  1. Header (Encabezado): contiene metadatos como el tipo (JWT) y el algoritmo (HS256).
    Ejemplo:

    { "alg": "HS256", "typ": "JWT" }
    

  2. Payload (Cuerpo): contiene datos o reclamaciones (claims) como usuario, permisos o expiración.
    Ejemplo:

    { "sub": "1234567890", "name": "Juan Pérez", "admin": true }
    

  3. Signature (Firma): garantiza la integridad del token usando una clave secreta.

    HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
    


Ventajas de JWT

  • Sin estado: no requiere almacenar sesiones en el servidor.
  • Eficiente: estructura ligera basada en JSON.
  • Versatilidad: sirve para autenticación e intercambio seguro de información.

Buenas prácticas

  • Incluye una expiración (exp) para limitar la validez del token.
  • Usa cookies seguras (HttpOnly) para almacenar tokens sensibles.
  • Implementa refresh tokens para renovar la validez.

Ejemplo típico de JWT

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ikp1YW4gUGVyZXoiLCJhZG1pbiI6dHJ1ZX0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Para decodificarlo, usa jwt.io.


Recursos adicionales