TanodTools
ES

Decodificador de JWT

Pega un JSON Web Token para leer su header y su payload, con las fechas de expiración y emisión mostradas como fechas reales.

Funciona completamente en tu navegador

Tokens de hasta 1 MB. Solo decodifica: la firma se muestra, pero no se verifica.

Cómo decodificar un JWT

  1. Pega el token en el cuadro. Se ignoran un Bearer inicial y los espacios o comillas alrededor.
  2. Lee el header y el payload abajo, y las fechas de expiración, inicio de validez y emisión en tu zona horaria y en UTC.
  3. Copia el payload o el header decodificados como JSON formateado si los necesitas en otro lugar.

Qué hay dentro de un JSON Web Token

Para decodificar un JWT basta con entender su estructura: un JWT firmado son tres fragmentos de texto Base64url unidos por puntos: un header, un payload y una firma. El header y el payload son simplemente JSON escrito en Base64url, y por eso cualquiera puede leerlos. Base64url es una codificación, no un cifrado, así que nunca pongas secretos en el payload de un JWT a menos que el token esté cifrado.

El payload contiene claims. Algunos nombres están registrados: iss (quién emitió el token), sub (sobre quién trata), aud (a quién va dirigido), exp (cuándo expira), nbf (no válido antes de), iat (cuándo se emitió) y jti (un ID único). Los servicios agregan sus propios claims, como roles, scopes o una dirección de correo.

La firma es lo que hace confiables los claims, y verificarla requiere la clave de firma, que solo deberían tener el emisor y los servicios que aceptan el token. Este decodificador se limita a leer a propósito: muestra lo que dice un token y cuándo expira, que normalmente es lo que necesitas al depurar un inicio de sesión o una llamada a una API.

Consejos

Preguntas frecuentes

¿Esto verifica la firma?

No. Esta página solo decodifica el token. Cualquiera puede crear un token con cualquier header y payload, así que el contenido que se muestra aquí son afirmaciones, no pruebas. Solo el servicio que tiene la clave de firma (o la clave pública, en los tokens RS256 y ES256) puede saber si un token es auténtico, y además debe comprobar la expiración, la audiencia y el emisor.

¿Es seguro pegar un token aquí?

Esta página no envía el token a ningún lado: lo decodifica un código que se ejecuta en tu navegador y no se guarda. Aun así, un token de acceso activo es una contraseña mientras sea válido. Evita pegar tokens de producción en cualquier sitio web y usa de preferencia tokens expirados o de prueba cuando estés depurando.

¿Por qué no puedo leer algunos tokens?

Un token con cinco partes en lugar de tres es un JWT cifrado (JWE). Su header se puede leer, pero el payload está cifrado y solo se puede leer con la clave del destinatario, así que esta herramienta muestra el header y explica las partes. Otros errores, como un número incorrecto de partes o un texto que no es Base64url ni JSON válido, se informan indicando qué falló.

¿Cómo se calculan las fechas?

Los claims exp, nbf e iat son NumericDate: segundos desde el 1 de enero de 1970 UTC. Se muestran en la zona horaria de tu dispositivo y en UTC, y se comparan con el reloj de tu dispositivo para indicar si el token expiró. Si tu reloj está mal, los tiempos relativos también lo estarán. Un valor que parece estar en milisegundos se señala, porque es un error común.

¿Qué significan alg, typ y kid?

alg es el algoritmo de firma, como HS256 (un secreto compartido), RS256 o ES256 (un par de claves). typ suele ser JWT. kid es el ID de la clave que usó el emisor, que le indica al verificador con qué clave comprobar la firma. Un token con alg en none no está firmado y nunca debe aceptarse para nada importante.