Auditer une authentification JWT : pièges courants et code corrigé

Confrontez votre implémentation JWT aux erreurs classiques (algorithmes, expiration, stockage, refresh tokens, révocation) et obtenez des constats par gravité, du code corrigé et des tests. Conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Il comprend 4 variables personnalisables et vous pouvez le copier gratuitement en un clic.

Avancé · Code · En attente de relecture éditoriale

Prompt

Agis comme un ingénieur en sécurité applicative spécialisé dans l’authentification des API.

Analyse cette implémentation d’authentification JWT :
{{code}}

Contexte :
- Stack et bibliothèque JWT : {{stack}}
- Type de client : {{client}}
- Émetteur des jetons : {{emetteur}}

Livrables :
1. Des constats avec gravité (critique, haute, moyenne, basse), extrait concerné, risque expliqué en une phrase et correction. Vérifie au minimum :
   - La vérification de signature avec une liste explicite d’algorithmes autorisés ; le rejet de `alg: none` et de la confusion entre algorithmes symétriques et asymétriques.
   - La validation de `exp`, `nbf`, `iss` et `aud`, avec une faible tolérance de décalage d’horloge.
   - La durée de vie de l’access token et l’usage de refresh tokens avec rotation et détection de réutilisation.
   - La révocation et la déconnexion : liste de blocage, version de session ou jetons à durée courte.
   - Le stockage côté client : `localStorage` ou cookie `HttpOnly`, `Secure`, `SameSite`, et la protection CSRF qu’exige chaque option.
   - Les secrets et clés : robustesse, lieu de stockage, rotation avec `kid` ou JWKS.
   - Les données sensibles dans le payload (seulement encodé, pas chiffré) et la taille du jeton.
   - La gestion des erreurs : messages qui ne divulguent rien et journaux sans jetons complets.
2. Le code corrigé pour ma stack, avec une bibliothèque maintenue et sans cryptographie maison.
3. Des tests automatisés pour chaque constat critique ou haut : jeton expiré, signature invalide, `alg` non autorisé, audience incorrecte et refresh token réutilisé.
4. Un ordre de priorité des corrections si je ne peux pas tout faire d’un coup.

Contraintes :
- N’affirme pas que le système est désormais totalement sûr ; recommande une revue de sécurité ou un test d’intrusion avant la production s’il traite des données sensibles.
- S’il manque une partie du flux (émission, refresh ou déconnexion), demande-la avant de conclure ou indique [À COMPLÉTER].
- Ne reproduis jamais de vrais secrets présents dans le code : remplace-les par des marqueurs.

Comment l'utiliser

  1. Collez le code d’émission, de vérification, de refresh et de déconnexion, en remplaçant d’abord tout secret réel.
  2. Précisez le type de client qui consomme l’API et où il stocke le jeton.
  3. Corrigez d’abord les constats critiques et ajoutez leurs tests à votre CI.

Exemple d'utilisation

Stack : Node.js avec Express et jsonwebtoken · Client : SPA sur un autre sous-domaine · Émetteur : l’API elle-même · Code : middleware d’authentification et endpoint /refresh.

Exemple de résultat

1. Constats

GravitéExtraitRisqueCorrectif
Hautejwt.verify(token, secret)Pas de liste explicite d’algorithmes : vous dépendez des valeurs par défaut de la bibliothèquealgorithms: ['HS256']
Haute—iss et aud non vérifiés : un jeton émis pour un autre service passeissuer et audience
Moyennereq.user = payloadTout le payload est accepté tel quelNe copier que sub et role
Moyenne—verify lève une exception non capturéetry/catch et 401 générique
[À COMPLÉTER]—Émission, refresh et logout absentsJ’ai besoin de ce code

2. Code corrigé

const jwt = require('jsonwebtoken');

const VERIFY_OPTS = {
  algorithms: ['HS256'],                 // ne jamais se fier à l’alg annoncé par le jeton
  issuer: 'https://api.exemple.fr',      // [À COMPLÉTER]
  audience: 'spa-exemple',               // [À COMPLÉTER]
  clockTolerance: 30,                    // secondes de décalage d’horloge
};

function requireAuth(req, res, next) {
  const token = req.cookies?.access_token; // cookie HttpOnly, Secure, SameSite
  if (!token) return res.status(401).json({ error: 'unauthorized' });
  try {
    const { sub, role } = jwt.verify(token, process.env.JWT_SECRET, VERIFY_OPTS);
    req.user = { id: sub, role };
    return next();
  } catch {
    return res.status(401).json({ error: 'unauthorized' }); // aucun détail côté client
  }
}

Lire le jeton dans un cookie impose cookie-parser et une protection CSRF sur les routes qui modifient des données…

Informations clés

Catégorie
Programmation et développement · API
Type de résultat
Code
Niveau
Avancé
Conçu pour
ChatGPT, Claude, Gemini et Microsoft Copilot
Vérifié sur
En attente de vérification éditoriale
Variables
Code actuel, Stack et bibliothèque, Type de client et Émetteur des jetons
Langue
Français
Prix
Gratuit, sans inscription
Mis à jour
07/11/2026

Questions fréquentes

Faut-il stocker le JWT dans localStorage ou dans un cookie ?

localStorage est exposé en cas de faille XSS. Un cookie HttpOnly n’est pas lisible en JavaScript, mais il impose une protection CSRF et un SameSite bien réglé. Le prompt explique les implications de chaque option pour votre cas.

Comment déconnecter un utilisateur si un JWT ne peut pas être invalidé ?

Avec des access tokens courts et des refresh tokens révocables côté serveur, ou une version de session par utilisateur vérifiée à chaque requête. On coupe ainsi l’accès sans attendre l’expiration du jeton.

À quoi sert ce prompt ?

Confrontez votre implémentation JWT aux erreurs classiques (algorithmes, expiration, stockage, refresh tokens, révocation) et obtenez des constats par gravité, du code corrigé et des tests.

Avec quels outils d'IA fonctionne-t-il ?

Il est conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Nous ne l'avons pas encore vérifié sur ces outils ; les résultats peuvent donc varier de l'un à l'autre.

Comment personnaliser le prompt ?

Cliquez sur « Personnaliser » et remplissez les variables (Code actuel, Stack et bibliothèque, Type de client et Émetteur des jetons). Le texte se met à jour instantanément et vous pouvez ensuite le copier en un clic. Les valeurs sont stockées uniquement dans votre navigateur.

Faut-il de l'expérience pour l'utiliser ?

Il est de niveau avancé : il s'adresse aux personnes expérimentées dans le domaine, capables d'évaluer et d'ajuster le résultat.

Ce prompt est-il gratuit ?

Oui. Tous les prompts de HomeCasa Prompts sont gratuits, sans inscription ni abonnement. Vous pouvez aussi les utiliser dans des projets professionnels.

Puis-je me fier au résultat de l'IA ?

Considérez-le comme un brouillon de qualité : vérifiez toujours les données, les chiffres et les affirmations importantes avant de publier ou de prendre des décisions.

Prompts similaires