Décodeur JWT
Décoder et inspecter les JSON Web Tokens
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) :
- Header — Specifie l’algorithme (par ex., HS256, RS256) et le type de jeton
- Payload — Contient les revendications (donnees) telles que l’identifiant utilisateur, les roles et la date d’expiration
- 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 :
| Revendication | Nom | Description |
|---|---|---|
sub | Subject | L’entite qui est le sujet du JWT (generalement un identifiant utilisateur) |
iss | Issuer | L’entite qui a emis le jeton |
aud | Audience | Les destinataires auxquels le jeton est destine |
exp | Expiration Time | Horodatage Unix apres lequel le jeton ne doit plus etre accepte |
iat | Issued At | Horodatage Unix de la creation du jeton |
nbf | Not Before | Horodatage Unix avant lequel le jeton ne doit pas etre accepte |
jti | JWT ID | Identifiant 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
Un JWT standard signe avec HMAC SHA-256. Contient les revendications subject, name et issued-at dans le payload.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c 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 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