IREX - Comprendre les Jetons JWT : Le standard léger et rapide pour sécuriser vos APIs

Dans un monde d'applications web distribuées et de microservices, les jetons JWT sont devenus incontournables pour gérer l’authentification sans état de manière sécurisée, rapide et standardisée.

 · 4 min read

Document avec titres numérotés

  1. Introduction
  2. Dans un monde numérique où les applications web et mobiles interagissent en permanence avec des serveurs, l’authentification sécurisée est devenue une nécessité. Les jetons JWT (JSON Web Tokens) sont aujourd’hui largement utilisés pour gérer les sessions utilisateurs de manière stateless, notamment dans les architectures modernes comme les APIs REST. Mais comment fonctionnent-ils réellement, et quels sont les avantages et les risques liés à leur utilisation ?

  3. C'est quoi les Jetons JWT (JSON Web Token) ?
  4. Le JSON Web Token (JWT) est un standard ouvert (RFC 7519) utilisé pour l’échange sécurisé d’informations entre deux parties. Contrairement aux credentials, le JWT est auto-porté et signé, ce qui permet une vérification rapide sans base de données.

    Un JWT est composé de trois parties distinctes :

    • Header : Indique l’algorithme de signature et le type de jeton.
    • Payload : Contient les données utiles comme l’ID utilisateur ou ses rôles.
    • Signature : Sert à vérifier que le jeton n’a pas été modifié.

    Page connexion à la plateforme Librechat

  5. Comment ça fonctionne ?
  6. Voici le cycle classique d’utilisation d’un JWT dans une application :

    Diagramme de séquence du fonctionnement des jetons JWT

    • L’utilisateur s’authentifie avec ses credentials.
    • Le serveur génère un JWT signé et le transmet au client.
    • Le client stocke le token (dans un cookie sécurisé ou localStorage).
    • Lors de requêtes ultérieures (requête /demo dans ce cas), le client inclut le JWT dans l’en-tête Authorization.
    • Le serveur valide le token sans consulter la base de données et exécute la requête.

    Quand utiliser les Jetons JWT ?
    Les jetons JWT sont particulièrement utiles dans les cas suivants :
    • L'authentification d'API REST où ils permettent d’authentifier les utilisateurs sans stocker d’état côté serveur, ce qui simplifie la gestion des sessions.
    • Les applications web de type SPA (Single Page Application) où facilitent la navigation fluide entre les pages sans devoir se reconnecter à chaque changement de vue.
    • Les architectures distribuées (comme les microservices) où ils permettent de transmettre l'identité d’un utilisateur entre différents services sans dépendre d’un stockage centralisé.

    Exemple d'utilisation
    Nous allons expliquer avec Postman, comment se déroule l'envoi des requêtes avec JWT.

    a. Tout d'abord, nous devons nous rendre dans l'onglet « Authorization » de Postman et sélectionner « Bearer Token » comme type d'authentification :
    Choix du type d'autorisation sur Postman

    b. Ensuite, compléter les différentes sections du token JWT : le type d’algorithme (header), la clé secrète (signature) et la payload (corps du jeton) :
    Remplissage des paramètres d'autorisation

    c. Après cela, il sera question de spécifier dans quelle partie de la requête le token JWT sera inclus (en-tête ou paramètre) :
    Choix de l'emplacement du token

    d. Enfin, une fois le token correctement configuré, nous pouvons rédiger notre requête, renseigner les différents paramètres nécessaires et l'envoyer :
    Ecriture de la requete

  7. Avantages et Inconvénients
  8. Voici un aperçu des bénéfices et limitations de JWT :

    Avantages
    • Stateless : Aucun état à gérer côté serveur.
    • Performant : Réduit la charge sur le backend.
    • Flexible : Idéal pour les microservices ou les APIs distribuées.

    Inconvénients
    • Risque en cas de vol : Difficile à invalider sans mécanisme complémentaire.
    • Taille du token : Peut être plus volumineux qu’un simple ID de session.

  9. Bonnes Pratiques
  10. Pour utiliser les JWT de manière sécurisée, il est conseillé de :

    • Limiter la durée de vie des tokens (par exemple à 15 minutes).
    • Utiliser un refresh token pour renouveler le JWT.
    • Éviter d’y stocker des données sensibles (nom, mot de passe, etc.).
    • Signer les tokens avec une clé forte (HS256 ou RS256).
    • Utiliser des cookies httpOnly et secure pour le stockage.

  11. Conclusion
  12. Les jetons JWT offrent une solution puissante et flexible pour l’authentification et l’échange sécurisé d’informations entre services. Leur format compact, lisible et signé permet de s’en servir efficacement dans des systèmes distribués. Toutefois, leur mauvaise utilisation peut nuire à la sécurité globale. Bien implémentés, avec des algorithmes de signature solides et des durées de vie maîtrisées, les JWT peuvent grandement renforcer la sécurité d’un système d’authentification moderne.

  13. Voir aussi
  14. Dans cette optique, vous pouvez consulter :


No comments yet

No comments yet. Start a new discussion.

Add Comment