Decodificador JWT

Decodificar e inspeccionar JSON Web Tokens

Token JWT
Entendiendo JSON Web Tokens (JWT)
TL;DR

Un JSON Web Token (JWT) es un formato de token compacto y seguro para URLs, utilizado para transmitir claims de forma segura entre partes. Consta de tres partes codificadas en Base64URL — Header, Payload y Signature — separadas por puntos. Los JWT no estan cifrados por defecto: cualquiera puede leer el payload.

Que es un JWT?

Un JSON Web Token (JWT) es un estandar abierto (RFC 7519) para crear tokens compactos y autocontenidos que representan claims de forma segura entre dos partes. Los JWT se utilizan ampliamente en flujos de autenticacion y autorizacion, especialmente en los protocolos OAuth 2.0 y OpenID Connect.

La ventaja clave de los JWT es que son autocontenidos: el propio token transporta toda la informacion necesaria para verificar su autenticidad y extraer los claims del usuario, sin necesidad de consultar una base de datos en cada solicitud.

Como funcionan los JWT

Un JWT consta de tres partes separadas por puntos (.):

header.payload.signature

Cada parte esta codificada en Base64URL (una variante de Base64 segura para URLs):

  1. Header — Especifica el algoritmo (por ejemplo, HS256, RS256) y el tipo de token
  2. Payload — Contiene los claims (datos) como el ID de usuario, roles y expiracion
  3. Signature — Se crea firmando el header y el payload con un secreto o clave privada

Cuando un servidor recibe un JWT, recalcula la firma usando el header y el payload con el secreto/clave conocida. Si las firmas coinciden, el token es autentico y no ha sido alterado.

Claims estandar

La especificacion JWT define varios claims registrados:

ClaimNombreDescripcion
subSubjectEl principal que es el sujeto del JWT (generalmente un ID de usuario)
issIssuerLa entidad que emitio el token
audAudienceLos destinatarios para los que esta previsto el token
expExpiration TimeMarca de tiempo Unix despues de la cual el token no debe ser aceptado
iatIssued AtMarca de tiempo Unix de cuando se creo el token
nbfNot BeforeMarca de tiempo Unix antes de la cual el token no debe ser aceptado
jtiJWT IDIdentificador unico del token, util para prevenir ataques de replay

Casos de uso comunes

  • Autenticacion: Despues del inicio de sesion, el servidor emite un JWT que el cliente incluye en las solicitudes posteriores (tipicamente en el header Authorization: Bearer)
  • Inicio de sesion unico (SSO): Los JWT permiten a los usuarios autenticarse una vez y acceder a multiples servicios sin volver a ingresar credenciales
  • Autorizacion de APIs: Los microservicios validan JWT de forma independiente sin llamar a un servidor de autenticacion central
  • Intercambio de informacion: Los JWT pueden transportar claims arbitrarios entre partes con garantias de integridad

Prueba estos ejemplos

JWT valido (HS256) Válido

Un JWT estandar firmado con HMAC SHA-256. Contiene claims de subject, name e issued-at en el payload.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
JWT expirado Válido

Un JWT estructuralmente valido pero con un tiempo de expiracion (exp) en el pasado (enero de 2018). El decodificador lo marcara como expirado.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkV4cGlyZWQgVXNlciIsImV4cCI6MTUxNjIzOTAyMiwiaWF0IjoxNTE2MjM5MDIyfQ.4t2RVjhVGEVS5U7IjJhN_AH-kK5jPFBdNzHgyK92mgQ
Token malformado Inválido

Una cadena con puntos pero que no contiene segmentos codificados en Base64URL validos. El decodificador no podra analizar el header ni el payload.

not.a.valid.jwt.token