¿Qué es JWT?

JWT (JSON Web Token) es un formato de token compacto y autocontenido para transmitir información de forma segura entre partes. Aprende qué es JWT, cómo funciona y dónde se usa.

Definition
JSON Web Token

JWT es un estándar abierto (RFC 7519) que define una forma compacta y autocontenida de transmitir de forma segura información entre partes como un objeto JSON. El token está firmado digitalmente — usando HMAC con una clave secreta o RSA/ECDSA con un par de claves — lo que lo hace verificable y confiable. Los JWT se usan más comúnmente para autenticación y autorización en aplicaciones web.

Estructura de JWT

Un JWT consta de tres partes codificadas en Base64URL separadas por puntos: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFuYSIsImlhdCI6MTUxNjIzOTAyMn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c • Header — algoritmo y tipo de token: {"alg": "HS256", "typ": "JWT"} • Payload — claims (datos): {"sub": "1234", "name": "Ana", "iat": 1516239022} • Signature — HMACSHA256(base64(header) + "." + base64(payload), secreto)

Cómo Funciona la Autenticación JWT

1. El usuario inicia sesión con credenciales 2. El servidor valida las credenciales y crea un JWT firmado con un secreto 3. El servidor envía el JWT al cliente 4. El cliente almacena el JWT (normalmente en localStorage o una cookie) 5. El cliente incluye el JWT en el encabezado Authorization en cada solicitud: Authorization: Bearer <token> 6. El servidor verifica la firma del JWT — si es válida, la solicitud es autorizada 7. No se necesita consulta a la base de datos — el payload contiene toda la info del usuario

Claims de JWT

El payload contiene claims — declaraciones sobre el usuario y datos adicionales: • Claims registrados (estándar): iss (emisor), sub (sujeto), aud (audiencia), exp (expiración), iat (emitido en) • Claims públicos: definidos por usuarios de JWT, deben registrarse para evitar colisiones • Claims privados: claims personalizados para compartir información entre partes Importante: Los payloads JWT solo están codificados en Base64, NO cifrados. Cualquiera puede decodificar y leer el payload — nunca pongas datos sensibles en un payload JWT.

Try it yourself

Decodificar Base64

Acerca de JWT

JWT fue introducido en 2010 y formalizado en RFC 7519 (2015). Se adoptó ampliamente como alternativa sin estado a la autenticación basada en sesiones — los servidores no necesitan almacenar datos de sesión porque toda la información está en el token mismo. El ecosistema incluye los estándares JWS (JSON Web Signature), JWE (JSON Web Encryption) y JWK (JSON Web Key).

FAQ

¿Qué significa JWT?
JWT significa JSON Web Token (Token Web JSON).
¿Es seguro/privado el payload del JWT?
No. El payload del JWT solo está codificado en Base64, que cualquiera puede decodificar. NO está cifrado. JWT solo garantiza que los datos no han sido manipulados (mediante la firma), no que sean privados. Para tokens cifrados, usa JWE (JSON Web Encryption).
¿Cuál es la diferencia entre JWT y una cookie de sesión?
Una cookie de sesión almacena un ID de sesión que el servidor busca en una base de datos. Un JWT es autocontenido — el servidor solo necesita verificar la firma. Los JWT son sin estado (sin base de datos) pero no pueden invalidarse sin infraestructura adicional, mientras que las cookies de sesión se pueden invalidar instantáneamente.

Herramientas relacionadas