Cómo leer un token JWT y entender qué contiene

Descubre las tres partes de un JWT, qué significa cada fecha y por qué decodificar un token no es lo mismo que validarlo.

Guía prácticaActualizado Lectura aprox.: 3 min
En esta página

Las tres partes de un JWT

Un JWT es una cadena con tres partes separadas por puntos: cabecera, contenido y firma. La cabecera indica el algoritmo (por ejemplo, HS256 o RS256) y el tipo. El contenido lleva los datos, llamados claims, como el identificador del usuario, el emisor o las fechas.

Las dos primeras partes son JSON codificado en Base64URL. No están cifradas: cualquiera con el token puede leerlas. Por eso no deben incluir contraseñas ni datos que no quieras mostrar.

Fechas y estado

Los claims iat, exp y nbf son fechas en segundos desde 1970 (hora Unix). Snipshed las muestra en formato legible en UTC y compara la caducidad con el reloj de tu dispositivo para indicar si el token está dentro de su vigencia, caducado o aún no es válido.

Si el reloj de tu equipo está desajustado, el estado puede equivocarse. Un token sin exp no caduca, algo que conviene revisar en un diseño de seguridad.

Decodificar no es validar

La firma garantiza que el contenido no fue modificado y que lo emitió quien posee la clave. Para comprobarla hace falta esa clave, y debe hacerse en el servidor que recibe el token. Un token con la firma alterada se decodifica igual.

Usa la herramienta para depurar una integración, entender qué reclama un token o preparar una prueba. No la uses para decidir si una petición es de confianza, y trata los tokens reales con cuidado: pegarlos en un sitio externo puede dar acceso a otra persona.

  1. Pega el token completo, con sus tres partes.
  2. Decodifica y revisa algoritmo, emisor y datos del usuario.
  3. Mira las fechas de emisión y caducidad y el estado.
  4. Recuerda que la firma no se verifica; valídala en tu servidor.

Criterios para revisar y entregar el resultado

Si trabajas con tokens a menudo, acostúmbrate a revisar tres cosas: el algoritmo, la caducidad y la audiencia. Un token con caducidad muy larga o sin caducidad aumenta el daño si se filtra. Evita pegar tokens de producción en herramientas externas y usa tokens de prueba en tus ejemplos. Si sospechas que un token se ha expuesto, revócalo en el servicio que lo emitió en lugar de esperar a que caduque.

PONLO EN PRÁCTICA

Leer un token de ejemplo

Pulsa Probar ejemplo y después Decodificar token. El ejemplo es un token de prueba que contiene un nombre, una fecha de emisión y una de caducidad.

Se muestran la cabecera con el algoritmo HS256, el contenido con los datos y las fechas en UTC, y el estado Caducado, porque el token de ejemplo caducó en 2018.

Cambia una letra de la firma y decodifica de nuevo: sigue funcionando, lo que demuestra que decodificar no valida. Cambia una letra del contenido y observa el error o el cambio de datos.

Ver captura de la herramienta
Ejemplo de Decodificar JWT con datos de prueba
Captura de Snipshed en Chrome con el ejemplo descrito. Los archivos descargables contienen datos ficticios.