Décodeur JWT
Décoder et inspecter les JSON Web Tokens. Voir header, payload et expiration.
// Decode JWT (without verification)function decodeJWT(token) {const [header, payload] = token.split('.').slice(0, 2);return {header: JSON.parse(atob(header)),payload: JSON.parse(atob(payload))};}// Using jsonwebtoken library// npm install jsonwebtokenconst jwt = require('jsonwebtoken');const decoded = jwt.decode(token);const verified = jwt.verify(token, secret);
Vous aimerez aussi
Qu'est-ce qu'un JWT ?
Un JWT (JSON Web Token, prononcé "djot") est comme un passeport numérique. C'est une méthode compacte et autonome pour transmettre des informations de manière sécurisée entre parties.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4ifQ.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Ça ressemble à du charabia ? Ce sont en fait trois parties encodées en base64 séparées par des points !
Pourquoi les JWTs existent :
- Authentification sans état - Pas besoin de stocker des sessions sur le serveur
- Cross-domain - Fonctionne à travers différents services
- Autonome - Toutes les infos sont dans le token lui-même
- Compact - Assez petit pour être envoyé dans les headers/URLs
Structure du JWT expliquée
Un JWT a trois parties : Header.Payload.Signature
1. Header
{
"alg": "HS256",
"typ": "JWT"
}
Indique le type de token et l'algorithme de signature.
2. Payload
{
"sub": "1234567890",
"name": "Jean Dupont",
"admin": true,
"exp": 1516242622
}
Contient les données réelles (appelées "claims").
3. Signature Vérifie que le token n'a pas été altéré.
N'importe qui peut lire un JWT ! Le payload est juste encodé en base64, pas chiffré. Ne mettez jamais de données sensibles (mots de passe, cartes de crédit) dans un JWT.
Claims JWT courants
Claims enregistrés (Standard)
| Claim | Nom | Description |
|---|---|---|
iss | Issuer | Qui a créé le token |
sub | Subject | Qui/quoi le token concerne |
aud | Audience | Qui devrait accepter le token |
exp | Expiration | Quand le token expire |
iat | Issued At | Quand le token a été créé |
Comment fonctionne l'authentification JWT
1. L'utilisateur se connecte avec ses identifiants
2. Le serveur crée et retourne un JWT
3. L'utilisateur envoie le JWT avec chaque requête
4. Le serveur vérifie le JWT et répond
Pourquoi c'est mieux que les sessions :
- Le serveur n'a rien à stocker
- Fonctionne sur plusieurs serveurs (microservices)
- Facile à mettre à l'échelle horizontalement
Considérations de sécurité JWT
Les JWTs ne sont pas chiffrés par défaut ! N'importe qui peut décoder et lire le payload. Seule la signature empêche la falsification.
Vulnérabilités JWT courantes :
1. Attaque algorithme "none" Les attaquants définissent l'algorithme sur "none" pour contourner la vérification de signature. Solution : Toujours valider l'algorithme côté serveur.
2. Faiblesse de la clé secrète Des secrets faibles comme "secret" ou "motdepasse" peuvent être forcés. Solution : Utilisez des clés aléatoires de 256+ bits.
3. Pas d'expiration
Les tokens qui n'expirent jamais sont un risque de sécurité.
Solution : Toujours définir le claim exp (courte durée : 15min-1h).
Bonnes pratiques de sécurité :
- Utiliser des clés secrètes fortes et aléatoires (minimum 256 bits)
- Garder les tokens de courte durée (15 minutes pour les access tokens)
- Utiliser des refresh tokens pour les longues sessions
- Toujours utiliser HTTPS
- Valider tous les claims côté serveur