Gliora

JWT

Concepto de Desarrollo web en Utilidades, conectado con sus herramientas y conceptos vecinos.

Actualizado el 15 de julio de 2026

Herramienta Decodificar JWT Lee la cabecera y el payload de un token JWT. Abrir calculadora →

Un JWT (JSON Web Token) es un estándar abierto (RFC 7519) para transmitir información entre dos partes de forma compacta y verificable. Se usa principalmente para autenticar usuarios en APIs: el servidor emite un token firmado que el cliente envía en cada petición, sin necesidad de mantener sesiones en el servidor.

Estructura de un JWT

Un JWT tiene tres partes separadas por puntos:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ik1hcmlhIiwiaWF0IjoxNzE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
  • Header: tipo de token y algoritmo de firma (p. ej., HS256 o RS256), codificado en Base64url.
  • Payload: los datos que quieres transmitir (claims), también en Base64url. Incluye campos estándar como sub (sujeto), iat (emitido en) y exp (expiración).
  • Signature: firma criptográfica del header + payload con una clave secreta. Si alguien modifica el payload, la firma no coincide y el token es rechazado.

¿Cómo funciona el flujo de autenticación?

  1. El usuario se identifica con usuario y contraseña.
  2. El servidor verifica las credenciales, genera un JWT firmado y lo devuelve.
  3. El cliente guarda el token (en memoria, localStorage o una cookie HttpOnly).
  4. En cada petición, el cliente envía el token en el header: Authorization: Bearer <token>.
  5. El servidor verifica la firma y extrae los datos del payload sin consultar la base de datos.

Algoritmos de firma más comunes

AlgoritmoTipoCuándo usarlo
HS256HMAC + SHA-256Aplicaciones con un único servidor (clave compartida)
RS256RSA + SHA-256Sistemas distribuidos donde distintos servicios validan el token con la clave pública
ES256ECDSA + SHA-256Igual que RS256 pero con claves más cortas y firma más rápida

Claims estándar del payload

{
  "sub": "usr_42",
  "name": "María García",
  "email": "maria@ejemplo.es",
  "iat": 1716239022,
  "exp": 1716242622
}
  • sub: identificador del sujeto (normalmente el ID de usuario).
  • iat: timestamp Unix de cuándo se emitió el token.
  • exp: timestamp Unix de caducidad. Si la hora actual supera este valor, el token es inválido.

Errores comunes

  • Guardar el token en localStorage sin precaución: cualquier script en la página puede leerlo (riesgo de XSS). Prefiere cookies HttpOnly + SameSite=Strict para mayor seguridad.
  • No validar la expiración: una librería correcta lo hace automáticamente, pero si validas manualmente, comprueba siempre el campo exp.
  • Poner datos sensibles en el payload: el payload es legible por cualquiera que tenga el token. Usa solo datos necesarios para autorizar la petición.
  • Tokens de larga duración: un token que dura 30 días es casi como no tener expiración. Combina un access token corto (15–60 min) con un refresh token de larga duración almacenado de forma segura.

JWT vs. otros mecanismos de autenticación

Un JWT es autocontenido y sin estado, ideal para microservicios y APIs consumidas desde múltiples clientes. Para aplicaciones web tradicionales con un único servidor, las sesiones de servidor siguen siendo más fáciles de invalidar y controlar. La elección depende de la arquitectura: si necesitas escalar horizontalmente o comunicar servicios independientes, los JWT son la opción natural.

Conceptos relacionados

También en Desarrollo web

Preguntas frecuentes

¿Es seguro el payload de un JWT?
El payload no está cifrado, solo codificado en Base64url: cualquiera puede leerlo. La firma garantiza que no ha sido manipulado, pero los datos son visibles. Nunca incluyas contraseñas ni información muy sensible en el payload sin cifrado adicional.
¿Cuál es la diferencia entre JWT y una sesión de servidor?
Una sesión de servidor guarda el estado en el servidor y el cliente solo tiene un ID de sesión. Un JWT es autocontenido: toda la información viaja en el token y el servidor no necesita consultar ninguna base de datos para validarlo, lo que lo hace ideal para APIs sin estado.
¿Qué pasa si un JWT es robado?
Un JWT robado permite suplantar al usuario hasta que expire. A diferencia de una sesión, no puedes invalidarlo desde el servidor fácilmente a menos que implementes una lista negra. Por eso los JWT de acceso deben tener una vida corta (15–60 minutos) y combinarse con un refresh token.

Ver todas las herramientas de Utilidades.