JWT Decoder
Pegue un JWT para decodificar e inspeccionar su encabezado, payload y claims.
¿Qué es un JWT?
Un JSON Web Token (JWT, pronunciado "jot") es un formato de token compacto y URL-safe definido en el RFC 7519. Los JWT son el estándar de la industria para transmitir información de autenticación y autorización entre partes. Se usan ampliamente en sistemas single sign-on (SSO), flujos OAuth 2.0 y autenticación de APIs.
Un JWT consta de tres partes codificadas en Base64URL separadas por puntos: una cabecera, un payload y una firma. La cabecera especifica el algoritmo de firma (por ejemplo, HS256, RS256). El payload contiene claims: pares clave-valor con información como ID de usuario, permisos y tiempo de expiración. La firma garantiza que el token no ha sido manipulado.
Claims JWT comunes
- sub: sub (Subject): identifica al principal, normalmente un ID de usuario o dirección de correo.
- iat: iat (Issued At): timestamp Unix que indica cuándo se creó el token.
- exp: exp (Expiration): timestamp Unix tras el cual el token ya no es válido.
- iss: iss (Issuer): identifica quién emitió el token (por ejemplo, tu servidor de autenticación).
- aud: aud (Audience): identifica al destinatario previsto del token (por ejemplo, tu API).
Cómo usar esta herramienta
Pega un JWT en el campo de entrada. La herramienta decodifica al instante la cabecera y el payload, mostrando los claims en un formato legible. Los tiempos de expiración se convierten a fechas legibles. La herramienta también verifica la estructura del token e indica si el formato es inválido.
¿Es seguro pegar mi JWT aquí?
Sí. Esta herramienta decodifica el JWT completamente en tu navegador usando JavaScript. No se envían datos a ningún servidor. Sin embargo, los JWT siempre deben tratarse como credenciales sensibles: nunca compartas tokens de producción públicamente, los publiques en chats ni los subas a control de versiones.
Cómo funciona la autenticación con JWT
Cuando un usuario inicia sesión, el servidor crea un JWT que contiene la identidad y los permisos del usuario, lo firma con una clave secreta y lo devuelve al cliente. El cliente incluye este token en la cabecera Authorization de las siguientes peticiones a la API. El servidor verifica la firma para asegurar que el token es auténtico y no ha sido modificado.
Este enfoque es sin estado: el servidor no necesita almacenar datos de sesión en una base de datos. Toda la información necesaria está incrustada en el propio token. Esto hace a los JWT ideales para sistemas distribuidos, arquitecturas de microservicios y aplicaciones serverless donde el estado compartido es difícil de gestionar.
Errores comunes con JWT
Almacenar datos sensibles (contraseñas, números de tarjeta) en el payload del JWT es un error crítico. El payload solo está codificado en Base64, no cifrado: cualquiera con el token puede decodificarlo y leerlo. Almacena solo identificadores y claims no sensibles en JWTs.
Usar tiempos de expiración excesivamente largos es otro error común. Un token válido durante 30 días le da a un atacante 30 días para usar un token robado. Mantén las vidas de los access tokens cortas (5-15 minutos) y usa refresh tokens para sesiones de larga duración.
Preguntas frecuentes
¿Cuál es la diferencia entre HS256 y RS256?
HS256 usa un secreto simétrico compartido: la misma clave firma y verifica el token. RS256 usa un par de claves asimétricas: una clave privada firma y una pública verifica. RS256 es preferible para sistemas distribuidos porque la clave de verificación se puede compartir públicamente sin comprometer la seguridad.
¿Se puede revocar un JWT?
Los JWT son sin estado, por lo que no se pueden revocar directamente. Soluciones comunes incluyen mantener una blocklist en servidor de IDs de tokens revocados, usar tiempos de expiración cortos o rotar las claves de firma. Para necesidades de revocación inmediata, considera usar tokens opacos con almacenamiento de sesión en servidor.