UltKit

Decodificador JWT

Pegue un JSON Web Token y lea su encabezado y su carga útil como JSON formateado, con las horas de caducidad y de emisión mostradas como fechas y una nota que indica si el token es válido en este momento. La decodificación ocurre por completo en su navegador, algo importante cuando el token es una credencial activa.

0 caracteres · 0 palabras · 0 líneas

0 caracteres · 0 palabras · 0 líneas

Funciona por completo en esta pestaña del navegador. Su texto nunca se sube ni se guarda.

Claims registrados

Los siete nombres de claim definidos en RFC 7519 §4.1. Todos son opcionales; los tiempos son segundos desde el 1970-01-01 UTC.

ClaimSignificado
issEmisor: quién creó y firmó el token
subSujeto: el usuario o la entidad a la que se refiere el token
audAudiencia: a quién va destinado el token
expHora de caducidad: rechazar el token después de este momento
nbfNo antes de: rechazar el token antes de este momento
iatEmitido el: cuándo se creó el token
jtiID del JWT: identificador único, sirve para evitar reutilizaciones

Valores de alg comunes

Valor de algSignificado
HS256HMAC con SHA-256; un único secreto compartido firma y verifica
RS256Firma RSA PKCS#1 v1.5 con SHA-256; la clave privada firma y la pública verifica
PS256RSA-PSS con SHA-256
ES256ECDSA sobre la curva P-256 con SHA-256; firmas cortas
EdDSAFirmas Ed25519 o Ed448
noneToken sin firmar; los servidores deberían rechazarlo

Qué hay dentro de un JSON Web Token

JWT está definido en la RFC 7519 (mayo de 2015), que sugiere pronunciarlo como la palabra inglesa "jot". La forma firmada habitual son tres cadenas Base64url unidas por puntos: header.payload.signature. El encabezado indica el algoritmo de firma en alg, como HS256 o RS256, y a menudo un ID de clave en kid. La carga útil contiene los claims, campos JSON como sub (el usuario), iss (el emisor), aud (la audiencia prevista) y exp, nbf e iat, que son tiempos en segundos desde el 1 de enero de 1970 UTC. El decodificador convierte estos tres a su hora local y a ISO 8601, y le indica si el token ha caducado, si todavía no es válido o si está dentro de su periodo.

Base64url es una codificación, no un cifrado, así que cualquiera que tenga un token puede leer su carga útil exactamente como lo hace esta página. Nunca ponga contraseñas, números de tarjeta ni otros secretos en los claims. Un token con cinco partes separadas por puntos es un JWE, un token cifrado; su contenido no se puede leer sin la clave, y el decodificador lo avisa. El prefijo "Bearer " copiado de un encabezado Authorization se elimina automáticamente.

Por qué aquí no se verifica la firma del JWT

La firma demuestra que el encabezado y la carga útil los generó alguien que tiene la clave y que no se han modificado desde entonces. Para comprobarla hace falta esa clave: el secreto compartido en los algoritmos HMAC como HS256, o la clave pública del emisor en RS256, ES256 o EdDSA. Pegar un secreto de firma de producción en cualquier página web es mala idea, y un decodificador que fingiera avalar un token sin la clave daría una falsa tranquilidad, así que esta herramienta muestra la firma pero no la verifica. Tome lo que ve como una afirmación del token, no como un hecho.

La verificación corresponde a su servidor, con una biblioteca mantenida y el algoritmo esperado fijado. Dos errores históricos explican por qué: aceptar alg "none", que permite a cualquiera falsificar un token sin firmar, y la confusión de algoritmos, en la que se engaña a un servidor que espera RS256 para que compruebe una firma HS256 usando la clave pública como secreto HMAC. Un decodificador sirve para depurar: ver qué claims emite un proveedor, detectar una audiencia equivocada o descubrir que una sesión falló porque exp venció hace un minuto. Para leer en bruto los segmentos Base64url, use el decodificador Base64.

Preguntas frecuentes

¿Es seguro pegar un token de acceso real en un decodificador JWT?
En esta página el token nunca sale de su navegador. Aun así, un token válido funciona como una contraseña hasta que caduca, así que es preferible usar tokens caducados o de prueba y mantener los activos fuera de capturas de pantalla y chats.
¿Por qué mi JWT aparece como caducado si se acaba de emitir?
Compruebe primero el reloj de su dispositivo. Algunos emisores dan a los tokens de acceso una vida de solo unos minutos, y un token copiado de un registro puede ser más antiguo de lo que parece. Un exp escrito en milisegundos en lugar de segundos produce lo contrario y queda miles de años en el futuro.
¿Alguien puede cambiar la carga útil de mi JWT?
Puede editarla y volver a codificarla, pero la firma dejará de coincidir. Un servidor que verifica las firmas con la clave y el algoritmo correctos rechaza el token alterado.
¿Qué diferencia hay entre JWS y JWE?
Un JWS (RFC 7515) está firmado, tiene tres partes y cualquiera puede leerlo. Un JWE (RFC 7516) está cifrado, tiene cinco partes y solo quien tiene la clave puede leer la carga útil.
¿Cerrar sesión invalida un JWT?
No por sí solo. Un JWT firmado sigue siendo válido hasta exp a menos que el servidor mantenga una lista de bloqueo o consulte un registro de sesión; por eso los tokens de acceso suelen tener una vida corta.