Le JWT (JSON Web Token) est un standard pour transmettre des informations de manière sécurisée entre deux systèmes. Utilisé principalement pour l'authentification, il garantit qu'un ensemble de données a été émis par un tiers de confiance, sans possibilité de falsification.
Structure du JWT Un JWT est composé de trois parties : Header (type de token et algorithme de signature), Payload (données à transmettre, signées mais non chiffrées), Signature (empreinte unique générée à partir du header, du payload et d'une clé secrète).
Avantages : Stateless (pas besoin de base de données pour vérifier l'authentification), Sécurisé (les JWT sont signés, ce qui assure l'intégrité des données), Interopérable (standardisé, utilisable pour différents cas).
Inconvénients : Token non révocable (reste valide jusqu'à expiration même après déconnexion), Modification des accès (un changement de droits n'invalide pas le token actuel).
Vigilance : Éviter d'utiliser le JWT pour gérer des sessions utilisateur. L'impossibilité de révoquer un token le rend peu adapté. Préférer des sessions stockées côté serveur dans une base Key-Value (Redis).
Bonne pratique : Utiliser des algorithmes sécurisés (HMAC, RSA) pour signer les tokens. Spécifier explicitement l'algorithme attendu pour éviter l'exploitation d'un algorithme faible.
Conseil : Préférer le JWT pour des échanges sécurisés entre systèmes (webhooks) plutôt que pour la gestion de sessions. Opter pour une librairie réputée (Auth0) et la maintenir à jour.