Decodificador JWT (contenido, caducidad y firma)

Pega un JWT y lee el encabezado y el payload, con la caducidad como fecha y hora. Si pones la clave, también comprueba la firma.

JWT

0 caracteres · 0 líneas

Todo se procesa en este dispositivo. Lo que escribes no se envía a ningún sitio.

Un JWT puede servir como llave para iniciar sesión. No lo pegues en otros sitios de los que no te fíes.

Contenido decodificado

Aquí aparece el resultado

¿Te resultó útil? Nos encantaría que lo compartieras

¿Algo no funciona o tienes una idea para mejorarlo?

Cómo se usa

  1. 1. Pega el JWT

    Toca «Pegar», encima del cuadro de arriba, para poner el JWT que copiaste. No pasa nada si lleva «Bearer» delante o comillas alrededor. Si solo quieres probar, toca «Ejemplo».

  2. 2. Mira el contenido

    En «Contenido decodificado», más abajo, aparece una etiqueta como «Vigente» o «Caducado», y debajo, la caducidad y la fecha de emisión con la hora de este dispositivo y frases como «dentro de 2 años» o «hace 3 horas». Más abajo salen el JSON del encabezado y del payload; toca «Copiar payload» para copiar el JSON ya formateado.

  3. 3. Comprueba la firma

    En «Comprobar la firma», al final de todo, pon la clave secreta si es HS256 o similar, o la clave pública si es RS256, ES256, etc. En cuanto la pones aparece «La firma es correcta» o «La firma no coincide». La clave del token de ejemplo es papatto-sample-secret.

Ideal para

  • Averiguar por qué se cierra la sesión de repente

    Pega el token y verás la caducidad (exp) y la fecha de emisión (iat) con la hora de este dispositivo y frases como «hace 5 minutos». Si ha caducado, la etiqueta lo dice al momento, así que es fácil detectar un reloj desfasado o una caducidad demasiado corta.

    Desarrolladores web y equipos de soporte

  • Ver qué lleva un token

    Lee como JSON formateado el usuario (sub), el emisor (iss), el destinatario (aud) y las claims propias, como los permisos. También puedes pegar tal cual el texto con «Bearer» que copiaste de las herramientas de desarrollo.

    Quien crea o prueba APIs

  • Comprobar si la clave de firma es la correcta

    Pon la clave secreta de HS256 o la clave pública (PEM o JWK) de RS256 o ES256 y comprueba al momento si la firma se hizo con esa clave. Sirve para descartar un error de configuración de claves cuando la autenticación falla.

    Desarrolladores que trabajan con autenticación

  • No sacar tokens reales de tu dispositivo

    Tanto la lectura como la comprobación se hacen dentro del navegador de este dispositivo. Los tokens y las claves no se envían a ningún servidor, así que no le das tus credenciales al servidor de nadie.

    Quien cuida la seguridad

Antes de usarlo

  • El contenido de un JWT no está cifrado: cualquiera puede leerlo. No metas en él contraseñas ni nada que no deba verse.
  • De un JWT cifrado (JWE) no se puede leer el contenido. Solo se puede leer el encabezado.
  • No descarga claves públicas por su cuenta (desde la URL de un JWKS). Pega tú la clave (esta página no se conecta a ningún sitio).

Sobre JWT

Un JWT (JSON Web Token) es un texto que representa los datos y permisos de quien ha iniciado sesión, en 3 partes: «encabezado.payload.firma». El encabezado y el payload son solo JSON pasado a la variante URL-safe de {tool:base64}, así que cualquiera puede revertirlos y leerlos. Lo que impide que se manipule es la firma del final.

Esta herramienta muestra exp (caducidad), nbf (válido desde) e iat (emisión) del payload como fecha y hora en la zona horaria de este dispositivo y con frases como «dentro de 3 horas», y avisa con una etiqueta si ha caducado. Las fechas que son solo un número también se pueden convertir con {tool:unix-time}. Si pones la clave, también comprueba si es correcta la firma HS256, RS256, PS256, ES256, EdDSA, etc., solo dentro del navegador.

Las 3 partes de un JWT
Qué contiene¿Se puede leer?
EncabezadoEl tipo de firma (alg), el tipo (typ) y el ID de la clave (kid)Cualquiera puede leerlo
PayloadClaims como el usuario (sub), la caducidad (exp) y los permisosCualquiera puede leerlo
FirmaUn valor creado con la clave a partir del encabezado y el payloadSin la clave no se puede comprobar

Preguntas frecuentes

Respuestas a las dudas más habituales antes de empezar.

¿Se envía a algún sitio el JWT que pego?

No. Tanto la lectura como la comprobación de la firma se hacen solo en el navegador de tu dispositivo, y ni el JWT ni la clave se envían a un servidor. Un JWT puede servir como llave para iniciar sesión, así que no lo pegues en otros sitios si no sabes qué hacen con él.

¿Cómo veo la caducidad (exp)?

La etiqueta de encima de «Contenido decodificado» indica «Vigente», «Caducado», «Aún no válido» o «Sin caducidad». En la lista de abajo, la fecha de caducidad aparece en la zona horaria de este dispositivo, con el tiempo que falta o que ha pasado, como «dentro de 3 horas» o «hace 2 días».

¿Se puede comprobar la firma?

Sí. Para HS256, HS384 y HS512, pon la clave secreta (en texto o en Base64); para RS256, PS256, ES256, EdDSA y otros, la clave pública. Al momento aparece «La firma es correcta» o «La firma no coincide».

¿Qué formatos de clave pública admite?

Admite PEM que empieza por «-----BEGIN PUBLIC KEY-----», «-----BEGIN RSA PUBLIC KEY-----», certificados (-----BEGIN CERTIFICATE-----), JWK y JWK Set ({"keys": […]}). Con un JWK Set, elige la clave con el mismo kid que el encabezado.

¿Se puede leer aunque lleve «Bearer» delante?

Sí. Quita automáticamente «Authorization: Bearer», los espacios, los saltos de línea y las comillas de alrededor antes de leerlo.

Aparece «JWT sin firma (alg: none)»

Es un token sin firma, cuyo contenido puede cambiar cualquiera. Si no es para pruebas, revisa la configuración del servidor. Un servidor que lo use para iniciar sesión u otras cosas no debe aceptar JWT con alg none.

Aparece «JWT cifrado (JWE)»

Un JWT dividido en 5 partes por «.» es un JWE, con el contenido cifrado. No se puede leer sin la clave privada de quien lo recibe, así que esta herramienta solo muestra el encabezado (el tipo de cifrado, etc.).

Aparece «No se puede leer como JWT»

Se perdió una parte al copiarlo o tiene caracteres que no se usan en un JWT. Se indica qué parte no se puede leer y el lugar se marca en naranja en el cuadro, así que revisa ahí.

¿El contenido de un JWT está cifrado?

No. El encabezado y el payload solo se sustituyen por caracteres según una tabla fija (base64url), así que cualquiera puede leerlos. No metas en ellos contraseñas ni datos personales.

¿Es gratis?

Sí, es gratis. Sin registro y sin anuncios.