Decodificador JWT
Decodificar e inspeccionar JSON Web Tokens
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):
- Header — Especifica el algoritmo (por ejemplo, HS256, RS256) y el tipo de token
- Payload — Contiene los claims (datos) como el ID de usuario, roles y expiracion
- 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:
| Claim | Nombre | Descripcion |
|---|---|---|
sub | Subject | El principal que es el sujeto del JWT (generalmente un ID de usuario) |
iss | Issuer | La entidad que emitio el token |
aud | Audience | Los destinatarios para los que esta previsto el token |
exp | Expiration Time | Marca de tiempo Unix despues de la cual el token no debe ser aceptado |
iat | Issued At | Marca de tiempo Unix de cuando se creo el token |
nbf | Not Before | Marca de tiempo Unix antes de la cual el token no debe ser aceptado |
jti | JWT ID | Identificador 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
Un JWT estandar firmado con HMAC SHA-256. Contiene claims de subject, name e issued-at en el payload.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c 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 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