Decodificar JSON Web Tokens
Un JSON Web Token (JWT) es una cadena compacta que se usa para transmitir información de identidad y permisos entre sistemas, normalmente como una cabecera Authorization: Bearer después de iniciar sesión. Parece texto aleatorio, pero son tres partes codificadas en Base64URL: una cabecera, un payload de notificaciones y una firma. Este decodificador de JWT divide el token, decodifica las dos primeras partes en JSON legible y explica las notificaciones importantes. La decodificación y la verificación se realizan localmente, por lo que tu token nunca se transmite.
Características
- Cabecera y payload decodificados y con formato legible, cada uno con un botón para copiar.
- Explicación de las notificaciones de tiempo:
iat,nbf,expyauth_timese convierten de segundos de la época Unix a fechas en tu zona horaria. - Comprobación de caducidad que te indica de un vistazo si el token ha caducado o todavía no está activo.
- Verificación de firmas HMAC para HS256, HS384 y HS512 usando la Web Crypto API de tu navegador.
- Funciona sin conexión una vez cargada la página; no se envía ningún dato.
Cuándo usarlo
Depurar la autenticación. Cuando una solicitud falla con un error 401 Unauthorized, decodifica el token para comprobar si ha caducado, si se emitió para la audiencia (aud) correcta o si contiene los roles y scopes esperados.
Desarrollar y probar API. Verifica que tu servidor incluye en el token las notificaciones que esperas, con las fechas de caducidad correctas, antes de desplegar.
Aprender cómo funcionan OAuth y OpenID Connect. Los tokens de ID y los tokens de acceso de los proveedores de identidad suelen ser JWT. Decodificar un token de prueba muestra qué información comparte el proveedor sobre un usuario.
Anatomía de un JWT
header.payload.signature
- Cabecera — el tipo de token y el algoritmo de firma, por ejemplo,
{"alg":"HS256","typ":"JWT"}. - Payload — las notificaciones. Las notificaciones registradas incluyen
iss(emisor),sub(sujeto, normalmente el ID de usuario),aud(audiencia),exp,nbf,iatyjti(ID del token). Las aplicaciones añaden notificaciones personalizadas comonameorole. - Firma — se crea firmando
header.payloadcon un secreto (HMAC) o una clave privada (RSA, ECDSA, EdDSA). Si alguien cambia un solo carácter de la cabecera o del payload, la firma deja de coincidir.
Como el payload solo está codificado, nunca incluyas secretos como contraseñas en un JWT. Para decodificar otros datos en Base64, usa la herramienta Base64; para inspeccionar cualquier marca de tiempo, usa el Conversor de Timestamp Unix.