CalquioCalquio

Recherche

Rechercher des calculateurs et outils

Décodeur JWT

Décoder et inspecter les JSON Web Tokens. Voir header, payload et expiration.

Exemples de Code
// 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 jsonwebtoken
const 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)

ClaimNomDescription
issIssuerQui a créé le token
subSubjectQui/quoi le token concerne
audAudienceQui devrait accepter le token
expExpirationQuand le token expire
iatIssued AtQuand 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