Autenticación JWT
JSON Web Token (JWT) es un formato compacto de representación de reclamaciones pensado para entornos con limitaciones de espacio, como cabeceras de autorización HTTP y parámetros de consulta URI. Una reclamación se representa como un par nombre-valor que contiene un nombre de reclamación y un valor de reclamación.
Las reclamaciones en un JWT se codifican como un objeto JSON que se utiliza como carga útil de una estructura JWS (JSON Web Signature) o como texto sin formato de una estructura JWE (JSON Web Encryption). Las reclamaciones JWT se pueden firmar digitalmente o proteger la integridad con un Código de autenticación de mensajes (MAC) y también se pueden cifrar.
Visión general de JWT
JWT representa un conjunto de reclamaciones como un objeto JSON codificado en una estructura JWS o JWE. Este objeto JSON es el conjunto de reclamaciones JWT. El objeto JSON consta de cero o más pares de nombre-valor (o miembros), donde los nombres son series y los valores son valores JSON arbitrarios. Estos miembros son las reclamaciones representadas por el JWT. Los nombres de miembro dentro del conjunto de reclamaciones JWT se conocen como nombres de reclamación. Los valores correspondientes se conocen como valores de reclamación.
Un JWT se representa como una secuencia de partes URL separadas por caracteres de punto ('.'). Cada parte contiene un valor base64url-encoded. El número de partes en el JWT depende de la representación del JWS resultante utilizando la serialización compacta de JWS o JWE utilizando la serialización compacta de JWE.
Tipos de JWT
Ejemplo de JWT
The format of a typical JWS is <Base 64 URL codificado Encabezado json>.<Base 64 URK codificado Payload json>.<Firma codificada en base 64 URL >
Header
{
"alg": "RS256",
"typ": "JWT",
"kid": "a1"
}
Payload
{
"sub": "1234567890",
"name": "John Doe",
"admin": true,
"iat": 1516239022,
"exp": 1531762065
}eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0
.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ
.z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT
5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDkTal como se ilustra en el ejemplo, el JWS tiene las partes siguientes y está separado por el signo "." .
- Cabecera =
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0 - Carga útil =
G4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ - Firma =
z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDk