Decodificador de JWT

Pega un JSON Web Token y lee su cabecera y payload como JSON con formato — con las fechas de expiración traducidas a fechas legibles. Totalmente sin conexión.

1.162 visitas

Cómo Funciona

Un JSON Web Token es una cadena compacta formada por tres partes codificadas en Base64URL y unidas por puntos: header.payload.signature. Base64URL es una variante de Base64 segura para URLs que sustituye +// por -/_ y elimina el relleno final =, de modo que el resultado puede colocarse dentro de una URL o una cabecera HTTP sin necesidad de escapado. La cabecera es un pequeño objeto JSON que indica el algoritmo de firma y el tipo de token — normalmente {"alg":"HS256","typ":"JWT"}. El payload es un objeto JSON de «claims»: pares clave/valor arbitrarios que describen a quién representa el token y qué puede hacer, además de unos pocos claims de tiempo registrados — iat (emitido en), nbf (no válido antes de) y exp (expiración), todos almacenados como marcas de tiempo Unix. La firma se calcula sobre las dos primeras partes usando el algoritmo indicado en la cabecera y una clave que solo posee el servidor emisor.

Pega un token aquí y la herramienta lo divide por sus dos puntos, decodifica en Base64URL la cabecera y el payload, y presenta cada uno como JSON con sangría legible. Los valores exp/iat/nbf se convierten además a una fecha legible, con una insignia que muestra de un vistazo si el token está actualmente caducado.

Los JWT son la columna vertebral de la mayoría de los sistemas de autenticación modernos: los tokens de acceso de OAuth 2.0, los tokens de identidad de OpenID Connect y muchos sistemas de sesión personalizados usan este formato porque permite que un servidor emita una credencial autocontenida que otros servicios pueden leer sin consultar una base de datos — siempre que puedan verificar la firma. Los algoritmos habituales son HS256 (HMAC con secreto compartido) y RS256/ES256 (firmas asimétricas RSA o de curva elíptica, en las que el emisor conserva una clave privada y cualquiera puede verificar con la clave pública correspondiente).

Lo Que Deberías Saber

Decodificar no es verificar. La cabecera y el payload solo están codificados, no cifrados, así que cualquiera puede leerlos sin necesidad de clave — y cualquiera puede también falsificar un token con los claims que quiera. Lo único que hace fiable a un JWT es su firma, y comprobar una firma requiere el secreto (algoritmos HMAC) o la clave pública del emisor (algoritmos RSA/ECDSA). Esa comprobación corresponde a un servidor que posea la clave; no puede hacerse con seguridad dentro de una herramienta de navegador, ya que exponer ahí un secreto anularía su propósito. Trata este decodificador estrictamente como una ayuda de depuración — nunca como prueba de que un token es auténtico o sigue siendo válido.

Ten también cuidado con lo que pegas: un JWT transporta datos de sesión o de autorización, así que trátalo como una contraseña y evita pegar tokens reales de producción en cualquier herramienta de un equipo compartido. Los tokens con cinco partes separadas por puntos son JWE (cifrados), no JWS (firmados) — este decodificador gestiona la variante firmada, mucho más habitual. Y nunca confíes ciegamente en el campo alg en tu propio código de verificación — un ataque conocido engaña a implementaciones ingenuas para que acepten alg: none o cambien RS256 por HS256, razón por la cual la verificación de firmas debe hacerse con bibliotecas auditadas y no con código escrito a mano.

Preguntas Frecuentes

¿Decodificar verifica que el token sea válido?

No — decodificar solo lee el contenido. La verificación de la firma requiere el secreto de firma o la clave pública y corresponde a tu servidor. Cualquiera puede fabricar un token con cualquier payload; solo la firma demuestra su autenticidad.

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

La herramienta nunca transmite el token — la decodificación es local. Aun así, trata los tokens de producción como contraseñas: prefiere tokens caducados o de prueba al depurar en entornos compartidos.

¿Por qué mi token no se decodifica?

Comprueba que copiaste las tres partes separadas por puntos y que no se colaron saltos de línea. Los tokens cifrados (JWE, cinco partes) no se pueden leer sin la clave — esta herramienta procesa tokens firmados (JWS), el tipo más común.

¿Cuál es la diferencia entre un token JWS y uno JWE?

JWS (JSON Web Signature) es el formato firmado que decodifica esta herramienta — tres partes, legibles pero a prueba de manipulación. JWE (JSON Web Encryption) tiene cinco partes y el propio payload está cifrado, por lo que no puede leerse en absoluto sin la clave de descifrado; si tu token no se decodifica aquí y tiene cuatro puntos en lugar de dos, lo más probable es que sea un JWE.

¿Qué significan los claims exp, iat y nbf?

Los tres son marcas de tiempo Unix (segundos desde el 1-1-1970). iat registra cuándo se emitió el token, nbf marca el momento más temprano en que empieza a ser válido, y exp marca el momento en que deja de serlo. Un servidor que se comporte correctamente rechaza cualquier token cuya hora actual quede fuera de la ventana nbf-exp.

Comentarios

Aún no hay comentarios — ¡sé el primero en escribir uno!

Herramientas Similares