JSON Web Token

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

JSON Web Token (JWT) est un standard ouvert (RFC 7519) pour échanger de l'information de manière sécurisée via un jeton signé. Par exemple un serveur pourrait émettre un jeton possédant l'affirmation "utilisateur identifié en tant qu'administrateur" et le fournir au client. Le client pourrait alors vérifier le jeton pour prouver que l'utilisateur est identifié en tant qu'administrateur.

Structure[modifier | modifier le code]

Un jeton JWT est composé de trois parties : un entête, une charge utile et une signature. L'en-tête indique quel algorithme a été utilisé pour générer la signature, par exemple pour une signature utilisant l'algorithme HMAC-SHA256:

header = '{"alg":"HS256","typ":"JWT"}'

La charge utile est variable en fonction de l'application, mais il est indiqué dans les spécifications de JWT d'inclure une empreinte temporelle à la création (un "iat" ou encore "issued at" en anglais):

payload = '{"loggedInAs":"admin","iat":1422779638}'

La partie signature comprend une clé, un jeton et la signature effective. Le jeton est calculée via une concaténation de l'en-tête et de la charge utile, encodés en base64url, et séparés par un point. La signature elle-même est obtenue via l'algorithme spécifié dans l'en-tête appliqué au jeton et à la clé, par exemple:

key           = 'secretkey'
unsignedToken = encodeBase64(header) + '.' + encodeBase64(payload)
signature     = HMAC-SHA256(key, unsignedToken)

Notes et références[modifier | modifier le code]