Cómo decodificar y entender un token JWT

Desarrollador

Aprende qué contiene un JSON Web Token (JWT), cómo decodificarlo para leer el payload y cómo verificar su estructura sin usar ninguna librería.

¿Qué es un JWT?

Un JSON Web Token (JWT) es una forma compacta y segura para URLs de transmitir información (claims) entre dos partes. Se estandarizó en la RFC 7519 y se ha convertido en el formato de token por defecto para APIs modernas y flujos de inicio de sesión único (SSO). El token es una sola cadena que codifica un pequeño objeto JSON junto con una firma criptográfica: cualquiera que reciba el token puede leer su contenido, pero solo quien tenga la clave de firma puede producir un token válido. Esta propiedad hace que los JWT sean ideales para autenticación sin estado: el servidor ya no necesita mantener una sesión porque el propio token transporta los claims (id de usuario, permisos, expiración).

Dónde se usan los JWT

  • Autenticación de API

    Un cliente inicia sesión una vez y recibe un JWT; cada petición posterior envía el token en la cabecera Authorization: Bearer. La API verifica la firma y confía en los claims sin consultar la base de datos.

  • Inicio de sesión único (SSO)

    OpenID Connect se apoya en JWT. Un proveedor de identidad emite un ID Token que describe al usuario; las apps consumidoras confían porque pueden verificar la firma contra un endpoint JWKS público.

  • Acceso delegado de corta duración

    Los JWT funcionan bien para URLs únicas (restablecer contraseña, confirmación de email, enlaces de descarga firmados). El claim exp hace que el enlace caduque automáticamente.

Guía paso a paso

1

Comprende la estructura de un JWT

Un JWT tiene tres partes codificadas en Base64URL separadas por puntos: Cabecera.Payload.Firma. La cabecera especifica el algoritmo, el payload contiene los claims (datos) y la firma verifica la integridad.

2

Decodifica la cabecera

Toma la primera parte (antes del primer punto) y decodifícala en Base64URL. Obtendrás un objeto JSON como: {"alg":"HS256","typ":"JWT"}. Esto indica el algoritmo de firma utilizado.

3

Decodifica el payload

Toma la segunda parte y decodifícala en Base64URL. Verás claims como: sub (sujeto/ID de usuario), exp (timestamp de expiración Unix), iat (emitido en), iss (emisor) y claims personalizados.

4

Comprueba la expiración

El claim exp es un timestamp Unix. Compáralo con la hora actual para ver si el token sigue siendo válido. Ejemplo: exp: 1700000000 = 14 de noviembre de 2023, 22:13 UTC.

5

Usa nuestro Decodificador JWT

Pega tu JWT en la herramienta Decodificador JWT. Muestra al instante la cabecera, el payload y la sección de firma decodificados en JSON formateado, sin servidor y todo en tu navegador.

Usar nuestra herramienta

Decodificador JWT

Preguntas frecuentes

Q: ¿Es seguro decodificar un JWT en el navegador?

A: Sí: decodificar (leer el payload) es seguro. Los JWT están codificados en Base64URL, no cifrados. Nunca compartas tu JWT con sitios de terceros no confiables, ya que el token concede acceso.

Q: ¿Puedo verificar la firma JWT sin el secreto?

A: No. La verificación de la firma requiere la clave secreta (para HMAC) o la clave pública (para RSA/ECDSA). Nuestro decodificador muestra la estructura pero no puede verificar la firma sin la clave.

Q: ¿Qué significa "JWT expirado"?

A: Significa que el timestamp exp está en el pasado. El servidor rechaza los tokens expirados. Necesitarás actualizar o volver a autenticarte para obtener un nuevo token.