JWT (JSON Web Token) es un estándar abierto (RFC 7519) para la transferencia segura de información entre partes en forma de objeto JSON. JWT se usa ampliamente para la autenticación en aplicaciones web modernas.
Estructura JWT
JWT consta de tres partes separadas por puntos:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U
1. Encabezado (Encabezado)
{"alg": "HS256", "typ": "JWT"}
Define el algoritmo de firma y el tipo de token.
2. Carga útil
{"sub": "1234567890", "name": "John Doe", "iat": 1516239022, "exp": 1516242622}
Contiene reclamos: datos de usuario y metadatos de token.
3. Firma (Firma)
Garantiza la integridad del token. Para HS256:
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
Cómo funciona la autenticación JWT
- El usuario envía nombre de usuario y contraseña
- El servidor valida los datos y crea un JWT
- El cliente almacena el token (almacenamiento local, cookie)
- En cada solicitud, el cliente envía:
Authorization: Bearer <token> - El servidor verifica la firma y extrae datos de la carga útil
Depurador JWT
Utilice JWT Debugger Xuvero para decodificar y analizar tokens.
Seguridad JWT
- Almacenar tokens en la cookie httpOnly, no en localStorage
- Establezca una duración corta (15-30 minutos)
- Utilice el token de actualización para actualizar
- No guardar nuncadatos confidenciales en la carga útil
- Compruebe
algen el servidor - protección contra el ataque "alg: none"