KoderKoder.ai
TarifsEntrepriseÉducationPour les investisseurs
Se connecterCommencer

Produit

TarifsEntreprisePour les investisseurs

Ressources

Contactez-nousSupportÉducationBlog

Légal

Politique de confidentialitéConditions d’utilisationSécuritéPolitique d’utilisation acceptableSignaler un abus

Réseaux sociaux

LinkedInTwitter
Koder.ai
Langue

© 2026 Koder.ai. Tous droits réservés.

Accueil›Blog›Qu’est‑ce que le JWT ? Guide clair sur les JSON Web Tokens
17 oct. 2025·7 min

Qu’est‑ce que le JWT ? Guide clair sur les JSON Web Tokens

Comprenez ce qu’est un JWT (JSON Web Token), les trois parties qui le composent, ses usages et les conseils de sécurité essentiels pour éviter les erreurs courantes liées aux jetons.

Qu’est‑ce que le JWT ? Guide clair sur les JSON Web Tokens

JWT en termes simples

Un JWT (JSON Web Token) est une chaîne compacte et sûre pour les URL qui représente un ensemble d’informations (généralement sur un utilisateur ou une session) et qui peut être transmise entre systèmes. On le voit souvent sous la forme d’une longue valeur commençant par quelque chose comme eyJ..., envoyée dans un en‑tête HTTP tel que Authorization: Bearer <token>.

Pourquoi utiliser un jeton ?

Les connexions traditionnelles reposent souvent sur des sessions serveur : après la connexion, le serveur stocke des données de session et donne au navigateur un cookie d’identifiant de session. Chaque requête inclut ce cookie et le serveur consulte la session.

Avec l’auth par jeton, le serveur peut éviter de garder l’état de session pour chaque requête utilisateur. Le client conserve un jeton (comme un JWT) et l’inclut dans les appels d’API. Cela est populaire pour les API parce que :

  • cela fonctionne bien entre plusieurs services (passerelles d’API, microservices)
  • cela convient aux applications mobiles et aux SPA qui appellent les API directement
  • cela réduit le besoin d’un stockage de session partagé entre serveurs

Nuance importante : « sans état » ne signifie pas « aucune vérification côté serveur ». De nombreux systèmes valident encore les jetons en fonction du statut de l’utilisateur, de la rotation des clés ou de mécanismes de révocation.

Authentification vs autorisation (en clair)

  • Authentification répond : Qui êtes‑vous ? (vous vous connectez et prouvez votre identité.)
  • Autorisation répond : Que pouvez‑vous faire ? (lire des factures, modifier des projets, accéder à des pages admin, etc.)

Les JWT contiennent souvent une preuve d’authentification (vous êtes connecté) et des indices d’autorisation basiques (rôles, permissions, scopes) — mais votre serveur doit toujours appliquer les règles d’autorisation.

Où apparaissent les JWT

On utilise souvent les JWT comme jetons d’accès dans :

  • les API web
  • les SPA
  • les applications mobiles
  • les systèmes utilisant OAuth 2.0 ou OpenID Connect (OIDC)

Structure du JWT : en‑tête, charge utile et signature

Un JWT est une chaîne compacte composée de trois parties, chacune encodée en Base64URL et séparée par des points :

header.payload.signature

Exemple (raccourci) :

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiaWF0IjoxNzAwMDAwMDAwfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c…

1) En‑tête

L’en‑tête décrit comment le jeton a été créé — principalement l’algorithme de signature (par ex. HS256, RS256/ES256) et le type de jeton.

Champs courants :

  • typ : souvent "JWT" (fréquemment ignoré en pratique)
  • alg : l’algorithme de signature utilisé
  • kid : identifiant de clé pour aider le vérificateur à choisir la bonne clé lors d’une rotation

Note de sécurité : ne faites pas aveuglément confiance à l’en‑tête. Imposer une allowlist des algorithmes réellement utilisés et n’acceptez pas alg: "none".

2) Charge utile

La charge utile contient des « claims » sur l’utilisateur et le contexte du jeton : pour qui il est, qui l’a émis et quand il expire.

Important : les JWT ne sont pas chiffrés par défaut. L’encodage Base64URL rend le jeton sûr pour les URL ; il ne cache pas les données.

C’est pourquoi vous devez éviter d’y placer des secrets (mots de passe, clés API) ou des données personnelles sensibles.

3) Signature

La signature est créée en signant l’en‑tête + la charge utile avec une clé :

  • HS256 : un secret partagé signe et vérifie
  • RS256/ES256 : une clé privée signe ; une clé publique vérifie

La signature fournit l’intégrité : elle permet de vérifier que le jeton n’a pas été modifié et qu’il a été émis par un signataire de confiance. Elle ne fournit pas de confidentialité.

Considérations de taille

Parce qu’un JWT inclut l’en‑tête et la charge utile à chaque requête où il est envoyé, des jetons plus gros signifient plus de bande passante et de surcharge. Gardez les claims légers et préférez des identifiants plutôt que des données volumineuses.

Charge utile et claims : que stocker (et ne pas stocker)

Itérez la sécurité sans risque
Testez les modifications de la logique d'authentification, créez un instantané et revenez en arrière si besoin.
Utiliser les instantanés

Les claims se divisent généralement en deux catégories : enregistrés (noms standardisés) et personnalisés (champs propres à votre application).

Claims enregistrés courants

  • iss (issuer) : qui a créé le jeton
  • sub (subject) : à qui le jeton se rapporte (souvent un ID utilisateur)
  • aud (audience) : pour qui le jeton est destiné (ex. une API spécifique)
  • exp (expiration time) : quand le jeton ne doit plus être accepté
  • iat (issued at) : quand le jeton a été créé
  • nbf (not before) : le jeton ne doit pas être accepté avant cette heure

Claims personnalisés : gardez‑les minimaux

Incluez seulement ce dont le service destinataire a réellement besoin pour prendre une décision d’autorisation.

Bons exemples :

  • un identifiant interne stable (user_id)
  • un petit ensemble de rôles/permissions (si vous pouvez les tenir à jour)
  • un ID de locataire/organisation dans les applications multi‑locataires

Évitez les claims « de commodité » qui dupliquent beaucoup de données de profil. Ils alourdissent le jeton, se périment rapidement et augmentent l’impact en cas de fuite.

Ce qu’il ne faut jamais mettre dans la charge utile

Comme la charge utile est lisible, n’y stockez pas :

  • mots de passe, clés API, refresh tokens ou toute valeur secrète
  • détails de paiement, numéros d’identité gouvernementaux ou données personnelles sensibles
  • tout ce que vous ne voudriez pas voir copié depuis un navigateur, un proxy ou un log

Si vous avez besoin d’informations sensibles, stockez‑les côté serveur et mettez seulement une référence (par ex. un ID) dans le jeton — ou utilisez un format chiffré (JWE) si nécessaire.

Comment fonctionne la signature (et ce qu’elle garantit)

Signer n’est pas chiffrer.

  • Signer ressemble à sceller une lettre : on peut la lire, mais on peut vérifier qu’elle n’a pas été altérée.
  • Chiffrer ressemble à enfermer la lettre dans une boîte verrouillée : seul celui qui a la clé peut la lire.

Quand un JWT est émis, le serveur signe l’en‑tête + la charge utile encodés. Quand le jeton est présenté plus tard, le serveur recalcule la signature et la compare. Si quelqu’un change une seule valeur (par ex. "role":"user" en "role":"admin"), la vérification échoue et le jeton est rejeté.

JWT vs OAuth, OpenID Connect et types de jetons

JWT est un format de jeton. OAuth 2.0 et OpenID Connect (OIDC) sont des protocoles qui décrivent comment les apps demandent, émettent et utilisent des jetons.

OAuth 2.0 et access/refresh tokens

OAuth 2.0 concerne principalement l’autorisation : permettre à une application d’accéder à une API au nom d’un utilisateur sans partager le mot de passe.

  • Access token : présenté à une API pour prouver la permission ; peut être un JWT ou un jeton opaque
  • Refresh token : jeton de plus longue durée utilisé pour obtenir de nouveaux access tokens

Les access tokens sont typiquement de courte durée (minutes). Des durées courtes limitent les dégâts en cas de fuite.

OpenID Connect (OIDC) et ID tokens

OIDC ajoute l’authentification (qui est l’utilisateur) par‑dessus OAuth 2.0 et introduit un ID token, qui est généralement un JWT.

  • ID token : pour que l’application cliente confirme l’identité de l’utilisateur
  • Access token : pour que l’API autorise les requêtes

Règle clé : n’utilisez pas un ID token pour appeler une API.

Si vous voulez plus de contexte sur des flux pratiques, voir /blog/jwt-authentication-flow.

Flux d’authentification JWT courant

Accélérez l'authentification JWT
Créez une app protégée par JWT via le chat, puis affinez les règles de vérification en mode planification.
Commencer gratuitement

Un flux typique ressemble à ceci :

1) Connexion

L’utilisateur se connecte (email/mot de passe, SSO, etc.). Si la connexion réussit, le serveur crée un JWT (souvent un access token) avec des claims essentiels comme le sujet et l’expiration.

2) Émission du jeton

Le serveur signe le jeton et le renvoie au client (application web, mobile ou un autre service).

3) Appels API

Pour les endpoints protégés, le client inclut le JWT dans l’en‑tête Authorization :

Authorization: Bearer <JWT>

4) Vérification

Avant de répondre, l’API vérifie généralement :

  • la signature (intégrité + émetteur de confiance)
  • exp (non expiré)
  • iss (émetteur attendu)
  • aud (destiné à cette API)

Si toutes les vérifications passent, l’API considère l’utilisateur comme authentifié et applique les règles d’autorisation (par ex. permissions au niveau des enregistrements).

5) Petit mot sur le décalage d’horloge

Les horloges système dérivent parfois : beaucoup de systèmes autorisent un petit décalage d’horloge lors de la validation des claims temps comme exp (et parfois nbf). Gardez ce skew petit pour ne pas prolonger la validité des jetons plus que prévu.

Où stocker les JWT en toute sécurité

Le choix de stockage change ce que les attaquants peuvent voler et à quel point ils peuvent rejouer un jeton.

Applications navigateur : mémoire vs localStorage vs cookies

Stockage en mémoire (souvent recommandé pour les SPA) : conserve l’access token dans l’état JS. Il est effacé au rafraîchissement et réduit le risque de “vol ultérieur”, mais une faille XSS peut toujours le lire pendant l’exécution. Associez‑le à des access tokens de courte durée et à un flux de rafraîchissement.

localStorage/sessionStorage : faciles mais risqués : toute vulnérabilité XSS peut exfiltrer les tokens. Si vous les utilisez, la prévention XSS est impérative (CSP, échappement, hygiène des dépendances) et gardez les tokens courts.

Cookies sécurisés (souvent le choix le plus sûr pour le web) : stockez les jetons dans un cookie HttpOnly pour que JavaScript ne puisse pas les lire — réduisant l’impact d’un vol via XSS. L’inconvénient est le risque CSRF, puisque les navigateurs joignent automatiquement les cookies.

Si vous utilisez des cookies, définissez :

  • HttpOnly
  • Secure (HTTPS seulement)
  • SameSite=Lax ou SameSite=Strict (certains flux inter‑sites peuvent nécessiter SameSite=None; Secure)

Envisagez aussi des tokens CSRF pour les requêtes modifiantes.

Applications mobiles : privilégiez le stockage sécurisé de l’OS

Sur iOS/Android, stockez les tokens dans un stockage sécurisé (Keychain / Keystore). Évitez les fichiers en clair ou les préférences. Si votre modèle de menace inclut des appareils rootés/jailbreakés, assumez l’extraction possible et reposez‑vous sur des tokens de courte durée et des contrôles côté serveur.

Moindre privilège

Limitez ce qu’un jeton peut faire : utilisez des scopes/claims minimaux, gardez les access tokens de courte durée et évitez d’embarquer des données sensibles.

Pièges de sécurité JWT courants à éviter

Les JWT sont pratiques, mais de nombreux incidents proviennent d’erreurs prévisibles. Traitez un JWT comme de l’argent liquide : celui qui l’obtient peut souvent le dépenser.

1) Durées d’expiration trop longues

Si un jeton dure des jours ou des semaines, une fuite donne à un attaquant toute cette fenêtre.

Préférez des access tokens de courte durée (minutes) et renouvelez‑les via un mécanisme plus sûr. Pour un « se souvenir de moi », utilisez des refresh tokens et des contrôles côté serveur.

2) Sauter les vérifications d’issuer et d’audience

Une signature valide ne suffit pas. Vérifiez iss et aud, et validez les claims temporels comme exp et nbf.

3) Faire confiance aux données décodées

Décoder n’est pas vérifier. Vérifiez toujours la signature côté serveur et appliquez les permissions côté serveur.

4) Confusion d’algorithme et erreurs de clé

  • N’acceptez pas l’algorithme que le jeton prétend utiliser sans vérification. Imposer une allowlist d’algorithmes.
  • Ne mélangez pas clés symétriques (HS256) et clés asymétriques (RS256/ES256).
  • Minimisez le blast radius en séparant les clés par environnement et en les faisant tourner.

5) Fuites de jetons via URLs, logs et referrers

Évitez de mettre des JWT dans les paramètres de requête. Ils peuvent finir dans l’historique du navigateur, les logs serveur, les outils d’analytics et les en‑têtes Referer.

Utilisez Authorization: Bearer ... à la place.

6) Pas de plan de rotation ou de révocation de clés

Supposez que les clés et les jetons peuvent fuir. Faites tourner les clés de signature, utilisez kid pour supporter une rotation fluide et ayez une stratégie de révocation (expirations courtes + capacité à désactiver comptes/sessions). Pour des conseils de stockage, voir /blog/where-to-store-jwts-safely.

Quand utiliser JWT (et quand ne pas l’utiliser)

Générez une API JWT en Go
Générez une API Go avec middleware JWT, vérification des claims et gestion propre des requêtes.
Créer un projet

Les JWT sont utiles, mais ne sont pas automatiquement le meilleur choix. La vraie question est de savoir si vous bénéficiez d’un jeton autonome qui peut être vérifié sans interroger la base de données à chaque requête.

Cas adaptés aux JWT

  • API sans état à grande échelle : vérification locale (signature + expiry) sans recherche de session par requête
  • Plusieurs services / microservices : règles de vérification partagées et clés publiques distribuables
  • SPA et applications mobiles : clients appelant les APIs directement
  • Jetons d’accès de courte durée : réduit l’impact d’un vol

Quand JWT est un mauvais choix

  • Révocation instantanée indispensable : les sessions sont plus simples si vous devez « déconnecter partout maintenant » sans infrastructure supplémentaire
  • Vous devez transporter des données sensibles : les JWT typiques sont signés, pas chiffrés
  • Jetons longue durée : ils sont de grande valeur et valent la peine d’être volés

Quand les cookies de session simples sont meilleurs

Pour les applications serveur‑rendu traditionnelles où l’invalidation est simple, les sessions côté serveur avec cookies HttpOnly sont souvent la valeur par défaut la plus simple et la plus sûre.

Checklist rapide de décision

Choisissez JWT si vous avez besoin d’une vérification sans état entre services et pouvez garder les jetons de courte durée.

Évitez JWT si vous avez besoin d’une révocation immédiate, prévoyez de mettre des données sensibles dans le jeton, ou pouvez utiliser des cookies de session sans friction.

Checklist pratique et FAQ

Checklist de vérification (ce qu’il faut vérifier à chaque fois)

  1. La signature est valide

Vérifiez avec la clé correcte et l’algorithme attendu. Rejetez les signatures invalides — sans exception.

  1. exp (expiration)

Assurez‑vous que le jeton n’est pas expiré.

  1. nbf (not before)

Si présent, assurez‑vous que le jeton n’est pas utilisé trop tôt.

  1. aud (audience)

Confirmez que le jeton était destiné à votre API/service.

  1. iss (issuer)

Confirmez que le jeton vient de l’émetteur attendu.

  1. Vérifications de sanity (recommandées)

Validez le format du jeton, imposez une taille maximale et rejetez les types de claims inattendus pour réduire les bugs liés aux cas limites.

Choisir HS256 vs RS256/ES256

  • HS256 (clé symétrique) : un secret partagé signe et vérifie.

    • Bien pour : une application/API unique contrôlée par une seule équipe.
    • Attention : tout vérificateur qui connaît le secret peut aussi forger des jetons.
  • RS256 / ES256 (clés asymétriques) : la clé privée signe ; la clé publique vérifie.

    • Bien pour : plusieurs services vérifiant des jetons ; distribution de clés publiques sans permettre la signature.
    • Remarque opérationnelle : la rotation est souvent plus sûre parce que seul le signataire détient la clé privée.

Règle générale : si plusieurs systèmes indépendants doivent vérifier les jetons (ou que vous ne faites pas entièrement confiance à chaque vérificateur), préférez RS256/ES256.

Supervision et logging (sans fuiter de jetons)

  • Ne loggez pas les jetons bruts (en‑têtes, cookies, query strings).
  • Si vous avez besoin de corrélation, loggez une empreinte du jeton (ex. un hash) ou des métadonnées sûres (iss, aud, et un ID utilisateur seulement si la politique le permet).
  • Surveillez les anomalies : échecs de signature, pics de jetons expirés, audiences/émetteurs inhabituels et schémas de refresh suspects.

FAQs

Les JWT sont‑ils chiffrés ?

Pas par défaut. La plupart des JWT sont signés, pas chiffrés : le contenu peut être lu par quiconque possède le jeton. Utilisez JWE ou évitez de mettre des données sensibles dans les JWT.

Puis‑je révoquer un JWT ?

Pas facilement si vous ne comptez que sur des access tokens autonomes. Approches courantes : access tokens de courte durée, listes de refus pour événements à haut risque, ou refresh tokens avec rotation.

Combien de temps doit durer exp ?

Aussi court que votre UX et votre architecture le permettent. Beaucoup d’APIs utilisent des minutes pour les access tokens, associées à des refresh tokens pour des sessions plus longues.

Construire des applications protégées par JWT plus rapidement avec Koder.ai

Si vous implémentez l’auth JWT dans une nouvelle API ou SPA, beaucoup de travail est répétitif : câbler le middleware, valider iss/aud/exp, définir les flags des cookies et éviter d’avoir du handling de jetons dans les logs.

Avec Koder.ai, vous pouvez générer rapidement une application web (React), des services backend (Go + PostgreSQL) ou une app mobile Flutter via un flux de travail basé sur le chat — itérer en mode planning, utiliser des snapshots et rollback pour affiner la sécurité, et exporter le code source quand vous êtes prêt. C’est un moyen pratique d’accélérer la construction de flux d’authentification JWT tout en gardant le contrôle sur la logique de vérification, la stratégie de rotation des clés et les paramètres de déploiement/hosting (y compris les domaines personnalisés).

FAQ

Qu’est‑ce qu’un JWT, et où l’envoie‑t‑on généralement ?

Un JWT (JSON Web Token) est une chaîne compacte et sûre pour les URL qui transporte des « claims » (champs de données) et peut être vérifiée par un serveur. Il est couramment envoyé sur les requêtes d’API via :

  • Authorization: Bearer <token>

L’idée clé : le serveur peut valider l’intégrité du jeton (via sa signature) sans avoir besoin d’un enregistrement de session par utilisateur pour chaque requête.

En quoi l’authentification JWT diffère‑t‑elle des sessions serveur ?

L’authentification par session stocke généralement l’état côté serveur (un enregistrement de session indexé par un cookie/ID de session). Avec l’authentification basée sur JWT, le client présente à chaque requête un jeton signé que l’API valide.

Les JWT sont populaires pour les API et les architectures multi‑services parce que la vérification peut se faire localement, réduisant le besoin d’un stockage partagé des sessions.

« Sans état » n’exclut pas toujours des vérifications côté serveur, comme des listes de révocation, le contrôle du statut utilisateur ou la rotation de clés.

Quelles sont les trois parties d’un JWT (en‑tête, charge utile, signature) ?

Un JWT se compose de trois parties encodées en Base64URL et séparées par des points :

  • header.payload.signature

L’en‑tête décrit la façon dont il a été signé, la charge utile contient des claims (par ex. sub, exp, aud) et la signature permet au serveur de détecter toute modification.

Un JWT est‑il chiffré, et peut‑on lire ce qu’il contient ?

Non. Les JWT standards sont généralement signés, pas chiffrés.

  • La signature prouve l’intégrité (le jeton n’a pas été modifié) et l’authenticité (émis par un signataire de confiance).
  • Toute personne qui obtient le jeton peut décoder en Base64URL l’en‑tête et la charge utile et lire leur contenu.

Si vous avez besoin de confidentialité, envisagez JWE (jetons chiffrés) ou conservez les données sensibles côté serveur et ne mettez qu’un identifiant dans le JWT.

Que garantit la signature d’un JWT — et que ne garantit‑elle pas ?

La signature permet au serveur de vérifier que le jeton n’a pas été altéré et qu’il a été émis par quelqu’un possédant la clé de signature.

Elle ne garantit pas :

  • la confidentialité de la charge utile ;
  • que l’utilisateur est toujours actif (sauf si vous vérifiez côté serveur) ;
  • la révocation avant exp.

Traitez le jeton comme un identifiant : s’il fuit, il peut souvent être réutilisé jusqu’à expiration.

Que signifient `alg` et `kid` dans l’en‑tête JWT, et pourquoi sont‑ils importants ?

alg indique l’algorithme utilisé (par ex. HS256 vs RS256). kid est un identifiant de clé qui aide à sélectionner la bonne clé lors de la rotation.

Règles de sécurité :

Quels claims JWT devrais‑je inclure dans la charge utile ?

Commencez par les claims standards et gardez les claims personnalisés au minimum.

Claims enregistrés courants :

Comment JWT, OAuth 2.0 et OpenID Connect se relient‑ils (access tokens vs ID tokens) ?

JWT est un format de jeton ; OAuth 2.0 et OpenID Connect sont des protocoles.

Correspondances typiques :

  • Access token : présenté à une API pour prouver les droits (peut être JWT ou opaque).
  •  : utilisé par l’application cliente pour confirmer l’identité (généralement un JWT).
Où dois‑je stocker les JWT en toute sécurité dans une application navigateur ?

Pour les applications web :

  • En mémoire : recommandé pour les SPA quand c’est possible ; le jeton est perdu au rafraîchissement mais une XSS active peut toujours le lire. À combiner avec des tokens courts et un flux de renouvellement.
  • localStorage / sessionStorage : pratique, mais vulnérable à toute faille XSS qui peut exfiltrer le jeton. Si vous les utilisez, la prévention XSS est indispensable (CSP, échappement, contrôle des dépendances) et les tokens doivent être courts.
  • Cookies HttpOnly et Secure : souvent la solution la plus sûre pour le web car JavaScript ne peut pas les lire, mais cela introduit un risque CSRF (les navigateurs joignent automatiquement les cookies).
Quelles vérifications mon API doit‑elle effectuer lors de la validation d’un JWT ?

Au minimum, vérifiez :

  • la signature (avec la bonne clé et l’algorithme allowlisté)
  • exp (non expiré)
  • iss (émetteur attendu)
  • aud (destiné à votre API)
  • nbf (si présent)

Garde‑fous pratiques :

Sommaire
JWT en termes simplesPourquoi utiliser un jeton ?Authentification vs autorisation (en clair)Où apparaissent les JWTStructure du JWT : en‑tête, charge utile et signatureCharge utile et claims : que stocker (et ne pas stocker)Comment fonctionne la signature (et ce qu’elle garantit)JWT vs OAuth, OpenID Connect et types de jetonsFlux d’authentification JWT courantOù stocker les JWT en toute sécuritéPièges de sécurité JWT courants à éviterQuand utiliser JWT (et quand ne pas l’utiliser)Checklist pratique et FAQConstruire des applications protégées par JWT plus rapidement avec Koder.aiFAQ
Partager
Koder.ai
Créez votre propre app avec Koder aujourd'hui!

La meilleure façon de comprendre la puissance de Koder est de le voir par vous-même.

Commencer gratuitementRéserver une démo
  • Limitez (allowlist) les algorithmes attendus ; n’acceptez pas n’importe quel alg.
  • N’acceptez jamais alg: "none".
  • Ne laissez pas une valeur kid non fiable provoquer un comportement dangereux lors de la sélection de la clé.
  • iss (issuer / émetteur)
  • sub (subject / identifiant du sujet)
  • aud (audience / destinataire prévu)
  • exp (expiration)
  • iat (issued at / émis à)
  • nbf (not before)
  • Évitez d’inclure des secrets ou des données personnelles sensibles dans la charge utile, car elles sont lisibles si le jeton est exposé.

    ID token (OIDC)
  • Refresh token : utilisé pour obtenir de nouveaux access tokens (souvent opaque ; très sensible).
  • Important : n’utilisez pas un ID token pour appeler une API simplement parce qu’il ressemble à un access token JWT.

    Si vous utilisez des cookies, définissez :

    • HttpOnly
    • Secure (HTTPS uniquement)
    • SameSite=Lax ou SameSite=Strict (ou SameSite=None; Secure pour certains flux inter‑sites)

    Pensez aussi aux tokens CSRF pour les requêtes modifiantes.

    Pour les applications mobiles : préférez le stockage sécurisé (Keychain / Keystore).

    • imposer une taille maximale de jeton
    • rejeter les types de claims inattendus
    • autoriser un petit décalage d’horloge pour compenser la dérive