Cómo decodificar e inspeccionar tokens JWT

· 4 min de lectura

Los tokens JSON Web Token (JWT) son la forma más habitual de gestionar la autenticación en las aplicaciones web modernas. Cuando algo falla en la autenticación — un usuario se desconecta sin razón, los permisos son incorrectos o una API devuelve 401 —, decodificar el JWT suele ser el primer paso de depuración.

Lo que contiene un JWT

Un JWT tiene tres partes separadas por puntos:

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U

Encabezado — contiene el algoritmo (HS256, RS256, etc.) y el tipo de token.

{"alg": "HS256", "typ": "JWT"}

Carga útil — contiene reclamaciones (afirmaciones) sobre el usuario y el token.

{"sub": "1234567890", "name": "Alice", "exp": 1700000000}

Firma — una huella criptográfica que garantiza que el token no se ha alterado. No puedes leerla sin la clave de firma.

Reclamaciones JWT habituales

Reclamación Nombre completo Contenido
sub Subject ID o identificador de usuario
exp Expiration Marca de tiempo Unix de fin de validez
iat Issued At Marca de tiempo Unix de creación
iss Issuer Quién creó el token (tu servidor de autenticación)
aud Audience A quién está destinado el token
nbf Not Before El token no es válido antes de esta fecha
jti JWT ID Identificador único del token

Cómo decodificar un JWT

  1. Pega tu token — introduce el JWT completo (formato encabezado.carga.firma) en el decodificador.
  2. Consulta las secciones decodificadas — la herramienta muestra el encabezado (algoritmo), la carga útil (reclamaciones) y la firma en forma de JSON formateado.
  3. Verifica las reclamaciones — examina la fecha de expiración, el emisor, el sujeto y cualquier reclamación personalizada.

Depurar con JWT

¿Token expirado? Comprueba la reclamación exp. Convierte la marca de tiempo Unix en una fecha legible. Si está pasada, el token ha expirado y hay que renovarlo.

¿Permisos incorrectos? Busca reclamaciones de rol o de alcance en la carga útil. Varían según las implementaciones, pero suelen parecerse a "role": "admin" o "scope": "read write".

¿Problema de identidad de usuario? La reclamación sub identifica al usuario. Comprueba que corresponde al ID esperado.

¿Token rechazado? Verifica la reclamación aud (audiencia). Si la API espera una audiencia específica y el token tiene otra, será rechazado.

Notas de seguridad importantes

Preguntas frecuentes

¿Puedo verificar una firma JWT con un decodificador?

No. La verificación de firma requiere el secreto de firma o la clave pública, que se guardan en tu servidor. Un decodificador te muestra lo que hay en el token, pero la verificación criptográfica debe hacerse en tu backend. Nunca confíes en un JWT no verificado en producción.

¿Es seguro pegar un JWT en una herramienta en línea?

Sí, cuando la herramienta se ejecuta en tu navegador. Los decodificadores en el navegador procesan el token localmente — nada se envía a un servidor. Evita las herramientas que hacen peticiones de red con tu token.

¿Qué es la reclamación exp?

La reclamación exp (expiration) es una marca de tiempo Unix que indica cuándo expira el token. Tras esa fecha, el token debe rechazarse. Comprueba siempre esta reclamación para depurar problemas de autenticación.

¿Pueden cifrarse los JWT?

Los JWT estándar (JWS) están firmados pero no cifrados — cualquiera puede decodificar la carga útil. Los tokens JWE (JSON Web Encryption) están cifrados, pero son menos habituales. Nunca pongas datos sensibles (contraseñas, secretos) en una carga útil JWT estándar.