JWT
¿Qué es JWT?
JWT (JSON Web Token) es un formato de token utilizado para autenticación y autorización, que incluye información codificada y firmada digitalmente. Se compone de tres partes: header, payload y signature.
Estructura de un JWT
Un token JWT tiene tres partes separadas por puntos (.):
HEADER.PAYLOAD.SIGNATURE
Cada parte está codificada en Base64 y representa:
- Header (cabecera): indica el algoritmo de firma y el tipo de token.
- Payload (carga útil): contiene los datos (claims), como el ID de usuario, roles, expiración, etc.
- Signature (firma): sirve para verificar que el token no ha sido modificado.
//Ejemplo real de JWT
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJ1c2VySWQiOiIxMjM0Iiwicm9sZSI6InVzZXIiLCJleHAiOjE3MDAwMDAwMDB9
.
dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
// Header (decodificado)
{
"alg": "HS256",
"typ": "JWT"
}
// Payload (decodificado)
{
"alg": "HS256",
"typ": "JWT"
}
Signature: Generada combinando el header + payload + clave secreta, usando el algoritmo especificado (HS256 en este caso).
¿Para qué sirve?
- Verificar identidad del usuario.
- Acceso a APIs sin sesiones de servidor.
- Compartir información entre servicios de forma segura.
Ventajas
- Stateless: no requiere guardar sesión en el servidor.
- Autocontenido: incluye la información del usuario.
- Seguro: puede ser firmado y cifrado.
Conclusión
JWT es una solución moderna para manejar autenticación y autorización en aplicaciones distribuidas y sin estado.