Decodificador de Tokens JWT
Decodifica JSON Web Tokens para inspeccionar su header, payload y firma. Verifica la expiración del token y los claims.
Cómo Usar el Decodificador JWT
- Pega tu token JWT en el campo de entrada (las tres partes codificadas en Base64URL separadas por puntos).
- La herramienta decodifica y muestra al instante el header y payload como JSON formateado.
- Revisa los claims incluyendo algoritmo, expiración (exp), emisor (iss) y claims personalizados.
- Verifica el estado de la firma y el timestamp de expiración del token.
¿Qué es un JSON Web Token (JWT)?
Un JSON Web Token (JWT, pronunciado 'yot') es un formato de token compacto y seguro para URLs definido por RFC 7519 para transmitir claims de forma segura entre partes. Un JWT consta de tres partes codificadas en Base64URL separadas por puntos: el header (que especifica el algoritmo y tipo de token), el payload (que contiene los claims) y la firma (que garantiza la integridad). Los JWTs se usan ampliamente para autenticación, autorización e intercambio de información en aplicaciones web y APIs modernas. El header típicamente contiene el algoritmo de firma (HS256, RS256, ES256) y el tipo de token. El payload contiene claims, que son declaraciones sobre el usuario y metadatos. Los claims estándar incluyen iss (emisor), sub (sujeto), exp (expiración), iat (emitido en) y aud (audiencia). Las aplicaciones añaden claims personalizados para roles, permisos y otros datos de sesión. Los JWTs han sido objetivo de numerosas vulnerabilidades de seguridad. El ataque 'alg: none' engaña a los servidores para que acepten tokens sin firma. Los ataques de confusión de algoritmo explotan servidores que aceptan tanto algoritmos simétricos (HS256) como asimétricos (RS256). Los secretos de firma débiles pueden ser descifrados por fuerza bruta con herramientas como jwt_tool o hashcat. Durante las pruebas de penetración, siempre prueba estas vulnerabilidades: intenta cambiar el algoritmo a 'none', intercambia RS256 por HS256 usando la clave pública como secreto, verifica si se aceptan tokens expirados y busca datos sensibles en el payload no cifrado.
Preguntas Frecuentes
No. El payload del JWT solo está codificado en Base64URL, no cifrado. Cualquiera puede decodificar y leer el payload sin la clave de firma. Nunca almacenes información sensible como contraseñas, números de tarjeta de crédito o datos personales en los claims del JWT a menos que uses JWE (JSON Web Encryption), que es un estándar separado.
HS256 (HMAC-SHA256) es un algoritmo simétrico donde la misma clave secreta se usa para firmar y verificar tokens. RS256 (RSA-SHA256) es asimétrico, usando una clave privada para firmar y una clave pública para verificar. RS256 es preferido para sistemas distribuidos porque la clave de verificación puede compartirse públicamente sin comprometer la capacidad de crear tokens.
Siempre verifica la firma usando el algoritmo y la clave correctos. Nunca confíes ciegamente en el header 'alg'; impón el algoritmo esperado del lado del servidor. Verifica el claim exp para rechazar tokens expirados. Valida los claims iss y aud. Usa una biblioteca JWT bien mantenida en lugar de implementar la validación tú mismo, ya que errores sutiles pueden provocar vulnerabilidades críticas.
Sí. Esta herramienta decodifica JWTs completamente en tu navegador. Ningún dato del token se envía a ningún servidor. Sin embargo, si el JWT contiene claims sensibles, ten en cuenta que solo está decodificado (no descifrado), por lo que los datos eran legibles por cualquiera con acceso al token de todas formas.