Acerca de Decodificador y verificador de JWT
Un JSON Web Token (JWT) es una cadena compacta formada por tres partes en base64url separadas por puntos: un encabezado que indica el algoritmo de firma, un payload con claims como el ID de usuario y la hora de caducidad, y una firma. Cualquiera puede decodificar las dos primeras partes, porque están codificadas, no cifradas, pero solo la firma te dice si el token lo emitió de verdad alguien que tiene la clave.
Esta herramienta decodifica el encabezado y el payload, convierte las marcas de tiempo exp, nbf e iat en fechas legibles y te dice si el token ha caducado. Si pegas el secreto de firma o la clave pública del emisor, también verifica la firma. Los tokens y las claves se procesan en tu navegador y nunca se envían a un servidor, algo importante porque los tokens de acceso dan acceso a cuentas reales.
Cómo se usa
- Pega el token en el cuadro “Token”. El prefijo "Bearer " y los saltos de línea se quitan automáticamente.
- Lee el “Encabezado” y el “Payload” decodificados, y revisa la tabla “Claims” para ver el emisor, el sujeto, la audiencia y el periodo de validez.
- Para comprobar la firma, ve a “Verificar la firma”. Para HS256, HS384 o HS512, escribe el secreto compartido; marca “El secreto está codificado en base64” si lo está.
- Para tokens RS, PS, ES o EdDSA, pega la clave pública como bloque PEM, certificado X.509, JWK o JWKS completo.
- Haz clic en “Verificar”. El resultado indica si la firma es válida.
Funciones
- Claims legibles: Las horas de caducidad, de inicio de validez y de emisión se muestran en UTC, en tu zona horaria y en relación con el momento actual, con un estado en vivo.
- Verificación de la firma: Admite HS256/384/512, RS256/384/512, PS256/384/512, ES256/384/512 y EdDSA (Ed25519) mediante la API Web Crypto de tu navegador.
- Claves en varios formatos: Acepta claves públicas SPKI en PEM, certificados X.509, JWK sueltos y conjuntos de JWK, en los que la clave se elige por su kid.
- Mensajes de error claros: Te dice si un token tiene un número de partes incorrecto, base64url o JSON no válidos, o si es un JWE cifrado.
- Privado desde el diseño: No se sube ni se guarda nada. Las claves se quedan en esta pestaña del navegador y desaparecen al cerrarla.
Ejemplos
¿Por qué la API devuelve 401?
Pega el token de acceso de la petición que falla. La tabla “Claims” muestra “Caducado” y la hora de caducidad en tu zona horaria, así sabes que el cliente no renovó el token.
Comprobar un token de ID de un proveedor de identidad
Copia el documento JWKS del proveedor (desde su jwks_uri) y pégalo como clave. La herramienta elige la clave con el kid correspondiente y verifica la firma RS256.
Depurar una integración con HS256
Pega un token y tu secreto compartido. Si la firma no coincide, comprueba si el secreto está codificado en base64 en un lado y en texto sin formato en el otro.
Limitaciones y notas
- Los tokens cifrados (JWE, de cinco partes) no se pueden descifrar.
- Las claves no se descargan desde una URL de JWKS: copia el JSON de esa URL y pégalo.
- No se admiten los bloques PKCS#1 "BEGIN RSA PUBLIC KEY"; conviértelos antes a un bloque SPKI "BEGIN PUBLIC KEY".
- La verificación solo comprueba la firma. Si el emisor, la audiencia y los demás claims son aceptables depende de tu aplicación.
- Puede que los navegadores antiguos no admitan EdDSA (Ed25519); la herramienta te avisa si una clave o un algoritmo no es compatible.
Preguntas frecuentes
¿Es seguro pegar un token aquí?
El token lo decodifica JavaScript en tu navegador y no se envía a ningún sitio. Aun así, trata los tokens de producción como contraseñas: cuando puedas, usa tokens caducados o de prueba.
¿Cualquiera puede leer el contenido de un JWT?
Sí. El encabezado y el payload solo están codificados en base64url. Nunca pongas secretos en el payload de un JWT: la firma solo protege contra los cambios, no contra la lectura.
¿Qué significa “Firma no válida”?
El token se modificó después de firmarse o se firmó con una clave distinta de la que proporcionaste. Asegúrate de usar el secreto correcto o la clave pública que corresponde al kid del encabezado.
¿Necesito la clave privada para verificar un token?
No. Los tokens RS, PS, ES y EdDSA se verifican con la clave pública. La herramienta rechaza las claves privadas para que no se peguen por error.
¿Por qué no se verifica un token con "alg": "none"?
Un token así no tiene firma, así que no hay nada que comprobar. Los servidores deberían rechazar los tokens sin firmar, salvo que los esperen de forma explícita.