CodeKitHub
Español
Herramientas de codificación

Decodificador JWT

Pega cualquier JWT (JSON Web Token) y comprueba al instante cómo se descodifican y se formatean su encabezado y su carga útil, incluyendo si ha caducado. Todo se realiza en tu navegador: el token nunca se envía a ningún sitio y no se lleva a cabo ninguna verificación de la firma (esta herramienta solo descodifica; no comprueba si el token es auténtico).

Encabezado

Carga útil

Se descodifica íntegramente en tu navegador: no se verifica ninguna firma y el token nunca se envía a ningún sitio.

¿Qué es esta herramienta?

Un JWT (JSON Web Token) es una cadena compacta y compatible con URL que se utiliza para transmitir reclamaciones entre dos partes; lo más habitual es que se utilice como token de autenticación tras iniciar sesión. Consta de tres partes separadas por puntos: un encabezado (algoritmo y tipo de token), una carga útil (las afirmaciones propiamente dichas: ID de usuario, roles, fecha de caducidad, etc.) y una firma (que utiliza el servidor para verificar que el token no ha sido manipulado).

El encabezado y la carga útil son simplemente JSON codificado en Base64URL —no están cifrados—, por lo que cualquiera puede descodificarlos y leerlos sin necesidad de una clave secreta. Solo la firma requiere una clave secreta para su verificación. Eso es exactamente lo que hace esta herramienta: descodifica las partes legibles y las muestra como JSON formateado, sin intentar verificar la firma.

¿Por qué utilizarlo?

  • Encabezado y carga útil legibles al instante, formateados en JSON: ya no es necesario dividir manualmente la cadena ni descodificarla de Base64 a mano.
  • Comprobación automática de caducidad: si la carga útil contiene un campo «exp», este se convierte en una fecha legible y se marca como caducada o válida.
  • Copiar con un solo clic el encabezado o el contenido, por separado.
  • 100 % del lado del cliente: el token se descodifica localmente y nunca se transmite, por lo que su uso es seguro incluso con tokens procedentes de un sistema de producción.
  • No se ha realizado ni se ha indicado ninguna verificación de firma: se trata de una herramienta de depuración e inspección, no de un validador.

Cómo utilizarlo

  1. Pega tu JWT en el cuadro (la cadena completa, incluidas las tres partes separadas por puntos).
  2. El encabezado y la carga útil se descodifican automáticamente a medida que escribes.
  3. Comprueba la línea de caducidad si el token tiene una reclamación «exp»: en ella se indica la fecha exacta y si el token ha caducado.
  4. Haz clic en «Copiar» debajo de cualquiera de los dos recuadros para copiar esa sección en formato JSON.

Ejemplo

Entrada

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQ

Resultado

Header: {"alg": "HS256"}
Payload: {"sub": "1234", "name": "John Doe", "exp": 1700000000}

La firma (tercera parte) nunca se descodifica ni se comprueba: se trata de un hash opaco que se utiliza en el servidor para verificar la autenticidad.

Consejos prácticos

  • Solución de errores de «token no válido»: descodifica primero la carga útil para comprobar la reclamación «exp»; un token caducado es la causa más habitual, y no siempre resulta evidente solo a partir del mensaje de error.
  • Comprobar qué contiene realmente el token de una API de terceros: muchas API devuelven un JWT de aspecto opaco como token de acceso; descódifalo aquí para ver los ámbitos, el ID de usuario o la fecha de caducidad que tu integración está recibiendo realmente.
  • Nunca des por sentado que un JWT está cifrado: si durante el desarrollo ves datos confidenciales (correo electrónico, identificadores internos) en una carga útil descodificada, eso es una señal de que debes trasladar esos datos al lado del servidor, en lugar de confiar en que el cliente no los lea.

Afirmaciones habituales que encontrarás en una carga útil

ReclamaciónSignificado
subSujeto: suele ser el ID de usuario al que representa el token
expTiempo de caducidad (marca de tiempo Unix): el token dejará de ser válido a partir de este momento
iatEmitido en — cuando se creó el token
issEmisor: qué servicio o servidor emitió el token
audPúblico objetivo: ¿a qué servicio va destinado el token?
role / roles / scopeReclamaciones personalizadas: permisos o roles concedidos al usuario (no forman parte del estándar JWT, pero son muy habituales)

Preguntas frecuentes

¿Esta herramienta verifica la firma del JWT?

No. Para verificar una firma se necesita la clave secreta o la clave pública utilizada para firmar el token, de las que solo dispone el servidor emisor. Esta herramienta solo descodifica el encabezado y la carga útil —las partes legibles para el usuario— para que puedas comprobar las afirmaciones y la fecha de caducidad sin necesidad de ninguna clave.

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

La descodificación se realiza íntegramente en tu navegador mediante JavaScript; el token nunca se envía a ningún servidor, ni siquiera al nuestro. Dicho esto, trata los tokens como si fueran contraseñas: no los pegues en herramientas en las que no confíes y evita compartir capturas de pantalla de tokens descodificados que contengan datos confidenciales.

¿Por qué cualquiera puede leer la carga útil de mi JWT sin necesidad de una contraseña?

Por diseño, el encabezado y la carga útil de un JWT están codificados en Base64URL, no cifrados. La codificación no es una medida de seguridad; simplemente hace que el JSON sea apto para su transmisión a través de URL. Nunca incluyas datos confidenciales (contraseñas, números de tarjetas de crédito) directamente en la carga útil de un JWT: da por hecho que cualquiera que tenga el token puede leer su contenido.

¿Qué significa la indicación «exp» y por qué es importante?

«exp» es la hora de caducidad del token, expresada como marca de tiempo Unix (segundos desde 1970). Los servidores rechazan un JWT una vez transcurrido este tiempo, lo que obliga al cliente a volver a autenticarse. Esta herramienta lo convierte en una fecha legible e indica si ya ha caducado, lo cual resulta útil para depurar problemas del tipo «¿por qué se ha cerrado mi sesión?».

Mi token muestra un error de análisis de JSON, ¿por qué?

O bien la cadena no es un JWT válido (debe constar exactamente de tres partes separadas por puntos), o bien se ha truncado o alterado; una causa habitual es que el token se haya dividido accidentalmente en varias líneas o que falten caracteres al final al copiarlo.

Herramientas relacionadas