¿Qué es JWT?
JWT (JSON Web Token, pronunciado “jot”) es un formato compacto para intercambiar información de forma segura entre dos sistemas. Está estandarizado en RFC 7519 y se utiliza principalmente para autenticación y autorización en aplicaciones web.
El problema que resuelve JWT: En la autenticación tradicional basada en sesiones, era necesario mantener la información de sesión en el servidor. Con JWT, el servidor se vuelve stateless, mejorando la escalabilidad.
Estructura de JWT
JWT se compone de tres partes, cada una codificada en Base64URL y concatenadas con puntos (.).
xxxxx.yyyyy.zzzzz
↓ ↓ ↓
Header.Payload.Signature
1. Header (Cabecera)
{
"alg": "HS256",
"typ": "JWT"
}
2. Payload (Carga útil)
{
"sub": "1234567890",
"name": "Tanaka Taro",
"iat": 1705234800,
"exp": 1705238400
}
3. Signature (Firma)
Es la firma del header y payload con una clave secreta.
Importante: El payload de JWT solo está codificado en Base64URL, no está cifrado. No incluyas información sensible en el payload.
Token de acceso y Token de actualización
| Tipo | Token de acceso | Token de actualización |
|---|---|---|
| Uso | Autenticación de acceso a API | Renovación del token de acceso |
| Tiempo de expiración | Corto (15 min - 1 hora) | Largo (7 - 30 días) |
| Ubicación de almacenamiento | Memoria o cookie de corta duración | Cookie HttpOnly |
Mejores prácticas de seguridad
- Establecer un tiempo de expiración apropiado
- Usar una clave secreta fuerte
- Especificar el algoritmo explícitamente
- Almacenar en cookies HttpOnly
- No incluir información sensible
Resumen
JWT es una herramienta poderosa para lograr autenticación stateless. Comprendiendo su estructura e implementándolo correctamente, puedes construir sistemas de autenticación seguros y escalables.
← Volver a la lista