JWT: guía completa sobre tokens de autenticación

Los JSON Web Tokens (JWT) son una forma compacta y autónoma de transmitir datos de autenticación de forma segura. Aprende la estructura, algoritmos de firma y las mejores prácticas de seguridad.

Qué es un JWT

Un JSON Web Token (JWT) es un estándar abierto (RFC 7519) para transmitir información entre partes como un objeto JSON firmado digitalmente. Muy utilizado para autenticación y autorización en APIs y aplicaciones web.

Estructura de un JWT

  • Header: tipo de token y algoritmo de firma (HS256, RS256…)
  • Payload: datos JSON sobre el usuario y la sesión (sub, exp, iat, roles…)
  • Signature: hash criptográfico del header + payload, firmado con un secreto o clave privada

Importante: el payload solo está codificado en Base64, no cifrado. Nunca almacenes contraseñas o datos sensibles en el payload.

Algoritmos de firma

  • HS256: simétrico — mismo secreto para firmar y verificar
  • RS256: asimétrico — clave privada firma, clave pública verifica
  • ES256: asimétrico con curvas elípticas — claves más cortas, preferido en sistemas modernos

Buenas prácticas de seguridad

  • exp corto (15 min) para access tokens
  • Refresh tokens separados con rotación
  • Cookies HttpOnly + Secure + SameSite=Strict para prevenir XSS
  • Lista de revocación (JTI deny-list) o rotación de clave