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.
- iat 1700000000 = 2023-11-14 22:13:20 UTC
- exp 1700003600 = 2023-11-14 23:13:20 UTC
- HS256 = 32 B
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.
| Claim | Valor | Hora (UTC) |
|---|---|---|
| iss | auth.example.com | — |
| sub | user-42 | — |
| aud | api | — |
| iat | 1700000000 | 2023-11-14 22:13:20 UTC |
| exp | 1700003600 | 2023-11-14 23:13:20 UTC |
| alg | Familia | Hash | Tamaño de la firma |
|---|---|---|---|
| HS256 | HMAC | SHA-256 | 32 B |
| HS512 | HMAC | SHA-512 | 64 B |
| RS256 | RSASSA-PKCS1-v1_5 | SHA-256 | 256 B (2048-bit key) |
| ES256 | ECDSA P-256 | SHA-256 | 64 B |
| ES512 | ECDSA P-521 | SHA-512 | 132 B |
| EdDSA | EdDSA | — | 64 B (Ed25519) |
Cómo decodificar un JWT
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.
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.
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.