Saltar al contenido

header.payload.signature

Decodificador JWT

Un JSON Web Token (JWT) son 3 partes en Base64url separadas por puntos: cabecera, carga útil y firma. Pega un token para leer sus claims y sus horas; aquí se decodifica, no se verifica.

El token se queda en esta pestaña y no se envía a ningún sitio. Un token decodificado no es un token de confianza: aquí la firma nunca se comprueba.

Scanned by NortonTM Safe Web

De un vistazo

Precio
Sin coste
Cuenta
No hace falta
Estándares
RFC 7519 (JWT), RFC 7515 (JWS), RFC 7516 (JWE)
Firma
No se verifica: el token solo se decodifica
Horas
exp, nbf e iat se muestran en UTC y se comparan con tu reloj
Subida
Ninguna: el token se queda en la pestaña de tu navegador

Un token de ejemplo y algoritmos habituales

El token de ejemplo de esta página está firmado con HMAC-SHA-256 y una clave desechable. La página lo decodificó para producir la primera tabla.

Claims del token de ejemplo
ClaimValorHora (UTC)
issauth.example.com—
subuser-42—
audapi—
iat17000000002023-11-14 22:13:20 UTC
exp17000036002023-11-14 23:13:20 UTC
Algoritmos de firma habituales (alg)
algFamiliaHashTamaño de la firma
HS256HMACSHA-25632 B
HS512HMACSHA-51264 B
RS256RSASSA-PKCS1-v1_5SHA-256256 B (2048-bit key)
ES256ECDSA P-256SHA-25664 B
ES512ECDSA P-521SHA-512132 B
EdDSAEdDSA—64 B (Ed25519)

Cómo decodificar un JWT

1

Pega el token

Pega el token completo, con o sin un Bearer al principio. Tiene 3 partes separadas por puntos, o 5 si es un JWE cifrado.

2

Lee las partes

La cabecera y la carga útil aparecen como JSON formateado, y cada claim se lista en una tabla. Las horas exp, nbf e iat se muestran en UTC.

3

Comprueba la hora

La página compara exp y nbf con el reloj de tu dispositivo e indica si el token ha caducado. No indica si el token es auténtico.

Cómo está construido un JWT

Un JWT (RFC 7519) se escribe como header.payload.signature. La cabecera y la carga útil son objetos JSON, cada uno codificado en Base64url sin relleno (RFC 4648, sección 5), y la firma son bytes sin procesar en la misma codificación. Decodificar solo cambia la codificación, así que cualquiera que tenga un token puede leer su carga útil: no pongas secretos en ella. La cabecera nombra el algoritmo de firma en alg, como HS256 (HMAC con SHA-256, una firma de 32 bytes) o RS256 (RSA con SHA-256, 256 bytes para una clave de 2048 bits).

Esta página decodifica un token y nada más. No comprueba la firma, porque eso requiere la clave, y no puede decirte si un token es auténtico, está revocado o lo acepta un servidor. Compara los claims exp, nbf e iat, que cuentan segundos desde 1970-01-01 UTC, con el reloj de tu dispositivo y los imprime como fechas y horas UTC. Un token con 5 partes es un JWE: su contenido está cifrado, así que solo se puede mostrar su cabecera.

Preguntas sobre JWT

¿Cómo decodifico un JWT?

Pega el token en el cuadro. La página lo divide en los puntos, convierte las dos primeras partes desde Base64url y las muestra como JSON. Un Bearer al principio se ignora. En el token de ejemplo la cabecera es {"alg":"HS256","typ":"JWT"}.

¿Esta página verifica la firma?

No. Verificar requiere el secreto o la clave pública, y esta página nunca pide ninguno. Un token que se decodifica aquí aún puede estar falsificado, alterado o revocado. Verifica la firma en el código de tu propio servidor con una biblioteca JWT mantenida.

¿Qué significan exp, iat y nbf?

Son horas en segundos desde 1970-01-01 UTC (RFC 7519). exp es cuándo caduca el token, nbf es la hora antes de la cual no debe aceptarse e iat es cuándo se emitió. En el token de ejemplo, iat 1700000000 es 2023-11-14 22:13:20 UTC y exp 1700003600 es una hora después.

¿Es seguro pegar aquí un token real?

El token se queda en la pestaña de tu navegador y no se envía a ningún sitio. Aun así, un token activo es una credencial: cualquiera que lo tenga puede usarlo hasta que caduque. Pega tokens que sean tuyos y, si puedes, prefiere tokens caducados o de prueba.

¿Por qué mi token tiene 5 partes?

Un token con 5 partes es un JWE, un JSON Web Token cifrado (RFC 7516). Su carga útil está cifrada para el destinatario, así que esta página solo muestra la cabecera y los tamaños de las partes. El contenido no se puede leer aquí.

¿Qué significa "not Base64url" o "not JSON"?

Cada una de las dos primeras partes debe ser texto Base64url que se decodifique a un objeto JSON. La página indica la parte que falla y por qué: un carácter fuera del alfabeto, bytes que no son UTF-8, o JSON con un error en una línea y una columna dadas. Lo más habitual es un token cortado o con caracteres de más.