¿Qué es un JSON Web Token?
Un JSON Web Token (JWT, definido en el RFC 7519) es una cadena compacta y segura para URLs que se usa para transferir claims (afirmaciones) entre dos partes. Es el formato más habitual para los access tokens de OAuth 2.0 y OpenID Connect, y para los tokens de sesión sin estado en APIs REST. Un JWT firmado tiene tres partes codificadas en base64url y separadas por puntos:
- Header – el tipo de token y el algoritmo de firma, por ejemplo
{"alg":"HS256","typ":"JWT"}. - Payload – los claims: quién es el usuario, qué puede hacer y cuándo expira el token.
- Firma – la prueba de que el header y el payload los emitió alguien que posee la llave y de que no han sido modificados.
Decodificar no es lo mismo que verificar
El header y el payload solo están codificados, no cifrados: cualquiera que tenga un token puede leerlo. Este
decodificador muestra su contenido al instante, traduce las marcas de tiempo exp, iat y
nbf a fechas legibles e indica si el token ha expirado. Sin embargo, para confiar en un token también debes
verificar su firma. Introduce el secreto compartido para tokens HMAC (HS256, HS384, HS512) o la llave
pública PEM para tokens RSA y ECDSA (RS256, PS256, ES256 y sus variantes) y la herramienta la comprobará con la API Web
Crypto de tu navegador.
Privado por diseño
Los tokens suelen dar acceso a sistemas reales, así que todo ocurre localmente en tu navegador: no se envía nada a
nuestros servidores. El token que pegas se recuerda en localStorage por comodidad (usa Limpiar
Datos para eliminarlo), mientras que los secretos y las llaves nunca se guardan.
Ejemplos prácticos
Depurar una respuesta 401 Unauthorized
Copia el valor de la cabecera Authorization: Bearer … desde la pestaña de red de tu navegador y pégalo
aquí (el prefijo Bearer se elimina automáticamente). Comprueba si exp está en el pasado, si el
claim aud coincide con tu API y si el iss es el proveedor de identidad que esperas.
Leer un token desde la línea de comandos
$ echo "$TOKEN" | cut -d. -f2 | base64 -d 2>/dev/null
Sirve para revisiones rápidas, pero no maneja el relleno de base64url ni verifica nada, algo que esta herramienta hace por ti.
Consejos de seguridad
- Nunca incluyas contraseñas ni datos personales en el payload: cualquiera puede leerlo.
- Rechaza los tokens con
alg: noney fija los algoritmos que acepta tu servidor. - Usa expiraciones cortas y refresh tokens para las sesiones de larga duración.