Décodeur JWT

Décoder et inspecter les JSON Web Tokens

Token JWT
Comprendre JSON Web Tokens (JWT)
TL;DR

Un JSON Web Token (JWT) est un format de jeton compact et compatible URL utilise pour transmettre de maniere securisee des revendications entre parties. Il se compose de trois parties encodees en Base64URL -- Header, Payload et Signature -- separees par des points. Les JWT ne sont pas chiffres par defaut : n'importe qui peut lire le payload.

Qu’est-ce qu’un JWT ?

Un JSON Web Token (JWT) est un standard ouvert (RFC 7519) permettant de creer des jetons compacts et autonomes qui representent de maniere securisee des revendications entre deux parties. Les JWT sont largement utilises dans les flux d’authentification et d’autorisation, en particulier dans les protocoles OAuth 2.0 et OpenID Connect.

L’avantage principal des JWT est qu’ils sont autonomes : le jeton lui-meme contient toutes les informations necessaires pour verifier son authenticite et extraire les revendications de l’utilisateur, sans necessiter de consultation de base de donnees a chaque requete.

Comment fonctionnent les JWT

Un JWT se compose de trois parties separees par des points (.) :

header.payload.signature

Chaque partie est encodee en Base64URL (une variante de Base64 compatible avec les URL) :

  1. Header — Specifie l’algorithme (par ex., HS256, RS256) et le type de jeton
  2. Payload — Contient les revendications (donnees) telles que l’identifiant utilisateur, les roles et la date d’expiration
  3. Signature — Creee en signant le header et le payload avec un secret ou une cle privee

Lorsqu’un serveur recoit un JWT, il recalcule la signature a partir du header et du payload avec le secret/la cle connu(e). Si les signatures correspondent, le jeton est authentique et non altere.

Revendications standard

La specification JWT definit plusieurs revendications enregistrees :

RevendicationNomDescription
subSubjectL’entite qui est le sujet du JWT (generalement un identifiant utilisateur)
issIssuerL’entite qui a emis le jeton
audAudienceLes destinataires auxquels le jeton est destine
expExpiration TimeHorodatage Unix apres lequel le jeton ne doit plus etre accepte
iatIssued AtHorodatage Unix de la creation du jeton
nbfNot BeforeHorodatage Unix avant lequel le jeton ne doit pas etre accepte
jtiJWT IDIdentifiant unique du jeton, utile pour prevenir les attaques par rejeu

Cas d’utilisation courants

  • Authentification : apres la connexion, le serveur emet un JWT que le client inclut dans les requetes suivantes (generalement dans l’en-tete Authorization: Bearer)
  • Authentification unique (SSO) : les JWT permettent aux utilisateurs de s’authentifier une seule fois et d’acceder a plusieurs services sans ressaisir leurs identifiants
  • Autorisation d’API : les microservices valident les JWT de maniere independante sans appeler un serveur d’authentification central
  • Echange d’informations : les JWT peuvent transporter des revendications arbitraires entre parties avec des garanties d’integrite

Essayez ces exemples

JWT valide (HS256) Valide

Un JWT standard signe avec HMAC SHA-256. Contient les revendications subject, name et issued-at dans le payload.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
JWT expire Valide

Un JWT structurellement valide mais dont la date d'expiration (exp) est situee dans le passe (janvier 2018). Le decodeur le signalera comme expire.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkV4cGlyZWQgVXNlciIsImV4cCI6MTUxNjIzOTAyMiwiaWF0IjoxNTE2MjM5MDIyfQ.4t2RVjhVGEVS5U7IjJhN_AH-kK5jPFBdNzHgyK92mgQ
Jeton malformate Invalide

Une chaine contenant des points mais dont les segments ne sont pas des donnees Base64URL valides. Le decodeur ne parviendra pas a analyser le header et le payload.

not.a.valid.jwt.token