Authentification JWT
JSON Web Token (JWT) est un format compact de représentation des demandes destiné aux environnements à espace limité tels que les en-têtes d'autorisation HTTP et les paramètres de requête URI. Une réclamation est représentée sous la forme d'une paire nom-valeur qui contient un nom de réclamation et une valeur de réclamation.
Les réclamations d'un jeton JWT sont codées en tant qu'objet JSON qui est utilisé comme contenu d'une structure JWS (JSON Web Signature) ou en tant que texte en clair d'une structure JWE (JSON Web Encryption). Les réclamations JWT peuvent être signées numériquement ou protégées par un code d'authentification de message (MAC) et peuvent également être chiffrées.
Présentation du jeton Web JSON
JWT représente un ensemble de revendications sous la forme d'un objet JSON codé dans une structure JWS ou JWE. Cet objet JSON est l'ensemble de réclamations JWT. L'objet JSON se compose de zéro ou plusieurs paires nom-valeur (ou membres), où les noms sont des chaînes et les valeurs sont des valeurs JSON arbitraires. Ces membres sont les réclamations qui sont représentées par le jeton Web JSON (JWT). Les noms de membre de l'ensemble de réclamations JWT sont appelés noms de réclamation. Les valeurs correspondantes sont appelées valeurs de réclamation.
Un JWT est représenté par une séquence de parties URL séparées par des points ('.'). Chaque partie contient une valeur base64url-encoded. Le nombre de parties dans le JWT dépend de la représentation du JWS résultant à l'aide de la sérialisation JWS Compact ou JWE à l'aide de la sérialisation JWE Compact.
Types de JWT
Exemple JWT
The format of a typical JWS is <Base 64 URL encodé Header json>.<Base 64 URK encodée Payload json>.<Signature codée 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_uPuvDkComme illustré dans l'exemple, le JWS comporte les parties suivantes et est séparé par le "." .
- En-tête =
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImExIn0 - Contenu =
G4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTMxNzYyMDY1fQ - Signature =
z4qfO0leZK2mYp_w-jFNidTx-Ri0PRMHLsOAG1Den7ZR4QntIJhU17U0afgoe5VzISXS6jW61ga3XEk39ey1G7a_-ARIVZLYN11fHDhsPuzN7PPkbT5uWpHEUhVWRR8dxHqXmNiDaWjNhTnzHCBpfrRHj5pR_dzubbuE_uPuvDk