Un JWT es un estándar (RFC 7519) para crear tokens que contienen información en formato JSON, codificados de forma segura para ser transmitidos entre dos partes: por ejemplo, un cliente (navegador) y un servidor.
Un JWT consta de tres partes separadas por puntos (.
):
Header.Payload.Signature
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEyMywibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNjcwMDAwMDB9.4B_3iQNsCBTcnPf1dq2Xb-8ArN7ysDkJBaZKn5Ow2p4
Header (Encabezado): Define el tipo de token y el algoritmo de firma usado.
{
"typ": "JWT", // Tipo: JSON Web Token
"alg": "HS256", // Algoritmo: HMAC-SHA256
}
Codificado en Base64:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Payload (Carga útil): Contiene los datos (o claims) del token, como información del usuario o permisos. Estos datos no están cifrados, solo codificados en Base64, por lo que cualquier persona que tenga el token puede leerlos.
Ejemplo de payload:
{
"sub": 123, // ID del usuario
"name": "John Doe", // Nombre del usuario
"iat": 1670000000, // Emitido en (timestamp)
"exp": 1670003600 // Expira en (timestamp)
}
Codificado en Base64:
eyJzdWIiOjEyMywibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNjcwMDAwMDB9
Signature (Firma): Garantiza la integridad del token y confirma que no ha sido alterado. Se genera usando:
Signature = HMACSHA256( base64UrlEncode(Header) + "." + base64UrlEncode(Payload), secret_key )
Ejemplo de firma:
4B_3iQNsCBTcnPf1dq2Xb-8ArN7ysDkJBaZKn5Ow2p4
Autenticación inicial:
Almacenar el JWT:
HttpOnly
y Secure
).Usar el JWT para solicitudes subsecuentes:
Authorization: Bearer
Validación del token:
exp
).Procesar la solicitud:
401 Unauthorized
).Inicio de sesión sin estado (stateless):
{
"sub": 123,
"name": "John Doe",
"role": "admin"
}
exp
) cortos: Minimiza el impacto en caso de que el token sea comprometido.HttpOnly
y Secure
para mitigar riesgos como XSS.localStorage
si la aplicación es vulnerable a XSS.¡Suerte con tu proyecto usando JWT! 😊
Esta web se reserva el derecho de suprimir, por cualquier razón y sin previo aviso, cualquier contenido generado en los espacios de participación en caso de que los mensajes incluyan insultos, mensajes racistas, sexistas... Tampoco se permitirán los ataques personales ni los comentarios que insistan en boicotear la labor informativa de la web, ni todos aquellos mensajes no relacionados con la noticia que se esté comentando. De no respetarse estas mínimas normas de participación este medio se verá obligado a prescindir de este foro, lamentándolo sinceramente por todos cuantos intervienen y hacen en todo momento un uso absolutamente cívico y respetuoso de la libertad de expresión.
No hay opiniones. Sé el primero en escribir.