Glossary
JWT
JSON Web Token
By Buğra SözeriPublished Updated
JWT (JSON Web Token, pronunciado “jot”) es un formato de token definido en RFC 7519 para transmitir afirmaciones firmadas entre partes. Un JWT son tres segmentos codificados en base64url separados por puntos: encabezado.contenido.firma.
El encabezado declara el algoritmo de firma (HS256, RS256, ES256, etc.). El contenido es un objeto JSON de afirmaciones — sub (sujeto), iss (emisor), exp (caducidad), iat (emitido en), más cualquier campo específico de la aplicación. La firma se calcula sobre base64url(encabezado) + "." + base64url(contenido) usando el algoritmo y la clave declarados en el encabezado.
Los JWT se usan para autenticación sin estado (el servidor no necesita almacenar sesiones; verifica la firma en cada solicitud), autorización entre servicios (tokens bearer de OAuth 2.0, tokens ID de OpenID Connect) y URLs de corta duración que codifican afirmaciones de acceso.
Problemas comunes: confiar en alg: none, aceptar tokens con clave simétrica donde se esperaba asimétrica, no validar exp. El decodificador JWT inspecciona el contenido de un token — no verifica la firma, porque la verificación requiere la clave del emisor.
Ejemplo práctico
Decodifica el JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NSIsIm5hbWUiOiJBbGljZSIsImlhdCI6MTcxNjQwMDAwMCwiZXhwIjoxNzE2NDg2NDAwfQ.firma. Encabezado: {"alg":"HS256","typ":"JWT"}. Contenido: {"sub":"12345","name":"Alice","iat":1716400000,"exp":1716486400}. El token se emitió en el tiempo Unix 1716400000 (un momento en mayo de 2024) y caduca 86.400 segundos después — exactamente 24 horas. Un verificador que recibe este token debe: (1) recalcular HMAC-SHA256 de encabezado.contenido con el secreto compartido y comprobar que coincide con la firma; (2) comprobar exp frente a la hora actual y rechazar si ha caducado; (3) opcionalmente comprobar que iss (emisor) y aud (audiencia) coinciden con los valores esperados. Cualquiera — incluido el navegador del usuario, cualquier proxy intermedio o un atacante que robe el token — puede decodificar en base64 el contenido y ver el nombre e ID de usuario de Alice. El token está firmado, no cifrado.
Cuándo y por qué importa
JWT importa cuando la autenticación sin estado es la elección de diseño — típico para SPA que se comunican con API REST, aplicaciones móviles con servicios backend, federaciones OAuth 2.0 / OpenID Connect y autorización de microservicio a microservicio. Los errores a evitar: (1) poner PII o datos sensibles en el contenido (es legible para cualquiera que tenga el token); (2) usar tiempos de caducidad largos sin estrategia de revocación (los tokens de más de 24 horas son peligrosos si son robados); (3) aceptar alg: none o dejar que el token elija el algoritmo; (4) almacenar JWT en localStorage donde XSS puede robarlos — prefiere cookies httpOnly con SameSite=Lax; (5) no validar aud, aceptando tokens emitidos para servicios hermanos. El patrón que funciona bien: tokens de acceso de 5-15 minutos + tokens de actualización revocables de larga duración + sesión opaca del lado del servidor para operaciones genuinamente sensibles. Referencia: RFC 8725 — Mejores prácticas actuales para JSON Web Token.
Por qué los JWT no están cifrados por defecto: un JWT estándar está firmado pero no es confidencial — cualquiera con el token puede decodificar en base64 el contenido y leer cada afirmación, incluido el correo electrónico del usuario, los roles y cualquier dato específico de la aplicación que el emisor eligió incrustar. Esto sorprende repetidamente a los ingenieros: poner PII o IDs de usuarios internos en un JWT y asumir que el token es una caja negra es una fuga de datos esperando ocurrir. Para la confidencialidad, cifra el contenido usando JWE (JSON Web Encryption, RFC 7516), que produce un token de cinco segmentos con cifrado adecuado junto a la firma. La mayoría de los sistemas de producción o bien mantienen la PII fuera del contenido o usan tokens de sesión opacos con búsquedas de estado del lado del servidor.
Tokens de actualización, caducidad y el problema de la revocación: la verificación sin estado es la característica principal de JWT y también su mayor responsabilidad operativa — una vez emitido, un JWT no puede revocarse hasta que caduque. La mitigación estándar son los tokens de acceso de corta duración (5-15 minutos) combinados con tokens de actualización de larga duración (días a meses) que son revocables a través de una lista de denegación del lado del servidor; el cliente intercambia el token de actualización por un nuevo token de acceso periódicamente. Los JWT de larga duración (24 horas o más) son un antipatrón para cualquier cosa sensible — un token robado es un pase libre hasta que caduca. El decodificador JWT de Convertitive resalta la afirmación exp para que puedas ver rápidamente si un token tiene una vida demasiado larga. Referencia: RFC 7519 — JSON Web Token.
Prueba la calculadora
Pega un JWT para inspeccionar el encabezado, el contenido y la firma sin ejecutar nada en el servidor.
Abrir el decodificador JWT →Frequently asked questions
- ¿Qué es un JWT?
- Un JWT (JSON Web Token, pronunciado 'jot') es un formato de token compacto y seguro para URL definido en RFC 7519. Codifica afirmaciones firmadas en tres segmentos codificados en base64url — encabezado, contenido, firma — separados por puntos.
- ¿Cómo se usa un JWT para la autenticación?
- Tras el inicio de sesión, el servidor emite un JWT firmado que contiene el ID del usuario y la caducidad. El cliente lo envía en el encabezado Authorization: Bearer en las solicitudes posteriores; el servidor verifica la firma y confía en las afirmaciones sin consultar un almacén de sesiones.
- ¿Están cifrados los JWT?
- No — un JWT estándar está firmado, no cifrado. Cualquiera que tenga el token puede decodificar en base64 el contenido y leer cada afirmación. Para contenidos confidenciales usa JWE (JSON Web Encryption), o mantén los datos sensibles fuera del token por completo.
- ¿Cuál es el error de seguridad más común con los JWT?
- Usar tiempos de caducidad largos (horas o días) sin una estrategia de revocación. Un JWT robado es válido hasta que caduca; mitígalo con tokens de acceso de corta duración (5-15 minutos) combinados con tokens de actualización revocables del lado del servidor.
Related
Published May 14, 2026 · Last reviewed May 31, 2026