Saltar al contenido
ToolMug

Decodificador de JWT

Pega un JSON Web Token para ver su encabezado y su payload, comprobar si ha caducado y verificar la firma con un secreto o una clave pública. Todo se ejecuta en local, así que los tokens de producción nunca se envían a un servidor.

Funciona en tu navegador: nada de lo que introduces se sube

Decodificar no verifica la firma. Cualquiera puede crear un token con cualquier claim.

Cómo se usa

  1. Pega el token, con o sin el prefijo «Bearer ». Las tres partes se muestran en colores distintos.
  2. Lee el encabezado y la carga útil decodificados. Los claims iat, nbf y exp se muestran como fechas con el tiempo relativo.
  3. Para verificar la firma, introduce el secreto compartido en tokens HS256/384/512, o pega la clave pública (PEM o JWK) en tokens RS, PS, ES y EdDSA.
  4. Copia el JSON decodificado si lo necesitas en otro sitio.

Opciones explicadas

Encabezado
Metadatos del token, normalmente alg (el algoritmo de firma) y typ. El campo kid indica qué clave lo firmó.
Carga útil (payload)
Los claims. Entre los registrados están sub (sujeto), iss (emisor), aud (audiencia), iat (emitido el), nbf (no válido antes de) y exp (caducidad), todos con horas en segundos Unix.
Firma
Demuestra que el encabezado y la carga útil no se han modificado. Para comprobarla se necesita el secreto (HMAC) o la clave pública del emisor (RSA, ECDSA, EdDSA).
El secreto está codificado en Base64
Algunos servicios guardan los secretos HMAC codificados en Base64. Marca esta opción si el secreto que tienes es la versión codificada.

Claims habituales

Claim Significado Ejemplo
sub A quién se refiere el token (ID de usuario) "1234567890"
iss Quién lo emitió "https://accounts.example.com"
aud A quién va destinado "my-api"
exp Hora de caducidad, en segundos Unix 1790427600
iat Hora de emisión, en segundos Unix 1790424000
nbf No válido antes de, en segundos Unix 1790424000
jti ID único del token, para evitar su reutilización (replay) "a1b2c3"

Ejemplo

El token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c se decodifica en el encabezado {"alg":"HS256","typ":"JWT"} y una carga útil con sub, name e iat (18 de enero de 2018). Con el secreto your-256-bit-secret, la firma se verifica correctamente.

Preguntas frecuentes

¿Es seguro pegar aquí un JWT de producción?

El token lo decodifica JavaScript en tu navegador y no se sube ni se registra. Aun así, trata los tokens de acceso como contraseñas, porque cualquiera que tenga un token válido puede usarlo hasta que caduque.

¿Decodificar un JWT demuestra que es auténtico?

No. El encabezado y la carga útil solo están codificados en Base64URL, así que cualquiera puede leerlos o falsificarlos. Solo una verificación de firma correcta con la clave adecuada demuestra que el token lo emitió quien se esperaba.

¿Por qué falla la verificación con el secreto correcto?

Comprueba si el secreto está codificado en Base64, si hay un espacio o un salto de línea al final y si el algoritmo del encabezado coincide con el que usa el emisor. Cualquier cambio en el token, aunque sea de un solo carácter, también invalida la firma.

¿Qué significa «alg none»?

Que el token dice no estar firmado. Los servidores deben rechazar estos tokens salvo que los esperen de forma explícita; aceptarlos ha provocado fallos reales de autenticación.

¿Cómo consigo la clave pública de un token RS256?

Los proveedores de identidad publican sus claves como JWKS, normalmente en /.well-known/jwks.json. Copia la clave cuyo kid coincida con el del encabezado del token y pégala aquí como JWK.

Privacidad

Esta herramienta funciona por completo en tu navegador. Tus archivos y textos se procesan en tu dispositivo y nunca se suben a nuestros servidores.

Herramientas relacionadas