Passer au contenu principal

Vue d’ensemble

Concepts clés
  • Découvrez les JSON Web Tokens (JWT) qu’Auth0 utilise pour les jetons d’accès, d’identité, d’actualisation et de déconnexion.
  • Passez en revue les algorithmes de signature pour comprendre ce qu’est la signature d’un jeton.
  • Validez les JWT pour vous assurer que personne ne les a altérés.
  • Utilisez les SDK Auth0, le middleware ou l’une des bibliothèques tierces offertes sur JWT.io pour valider les JWT.
Auth0 utilise pour la transmission sécurisée des données, l’authentification et l’autorisation. Les jetons doivent être analysés et validés dans les applications Web classiques, natives et monopages afin de s’assurer qu’ils n’ont pas été compromis et que leur signature est authentique. Les jetons doivent être vérifiés pour réduire les risques de sécurité si, par exemple, ils ont été altérés, mal utilisés ou ont expiré. La validation des vérifie la structure, les claims et la signature afin de réduire les risques au minimum. 
Pour inspecter visuellement un JWT, visitez JWT.io ou utilisez l’extension Chrome JWT Debugger).
La signature du jeton JWT est générée à l’aide d’un . Bien que les jetons puissent utiliser plusieurs , Auth0 prend en charge RS256, le chiffrement RSA avec fonction de hachage SHA-256, ainsi que HS256, le code d’authentification de message HMAC (MAC) avec SHA-256. Pour en savoir plus sur l’algorithme recommandé par Auth0, consultez Signing Algorithms. Lors de la validation d’un JWT, en règle générale, la valeur de hachage actuelle et la valeur de hachage d’origine sont analysées, ou décodées, puis comparées pour vérifier que la signature du jeton est authentique. Tous nos guides de démarrage rapide d’API backend utilisent des SDK qui effectuent pour vous la validation et l’analyse des JWT.

Analyser et valider

Si vous n’utilisez pas l’un de nos SDK qui effectuent pour vous l’analyse et la validation des JWT, vous pouvez analyser et valider un JWT de l’une des façons suivantes :
  • utiliser un middleware existant pour votre framework Web;
  • choisir une bibliothèque tierce sur JWT.io;
  • implémenter manuellement les vérifications décrites dans la RFC 7519 > 7.2 Validating a JWT.
Nous vous recommandons fortement d’utiliser un middleware ou l’une des bibliothèques tierces open source existantes pour analyser et valider les JWT. Sur JWT.io, vous trouverez des bibliothèques pour diverses plateformes et divers langages, comme .NET, Python, Java, Ruby, Objective-C, Swift et PHP.

Middleware

De nombreux frameworks Web, comme ASP.NET Core, incluent un middleware JWT qui prend en charge la validation des JWT. En général, c’est l’approche à privilégier, car le middleware s’intègre bien aux mécanismes d’authentification globaux du framework.

Bibliothèques tierces

Si vous choisissez une bibliothèque tierce, assurez-vous qu’elle prend en charge l’algorithme de signature que vous avez sélectionné lorsque vous avez enregistré votre application ou votre API dans Auth0. Sachez également que toutes les bibliothèques ne valident pas tous les claims JWT. Sur JWT.io, vous pouvez voir quelles validations sont prises en charge par chaque bibliothèque (repérez les coches vertes). La plupart des bibliothèques tierces offrent une méthode pour vérifier un JWT, avec différents arguments permettant de personnaliser la vérification. Par exemple, si vous utilisez Node.js et la bibliothèque node-jsonwebtoken, vous appelleriez la méthode jwt.verify(). Cette méthode prend en charge un argument algorithms qui vous permet de personnaliser les algorithmes autorisés (assurez-vous d’exclure none), un argument secretOrPublicKey que vous renseignez avec le secret ou la clé publique RSA (selon l’algorithme de signature sélectionné), ainsi que d’autres arguments d’entrée permettant de personnaliser la validation des claims. Si l’analyse échoue, la bibliothèque renvoie une erreur JsonWebTokenError avec le message jwt malformed, après quoi vous devez rejeter la requête associée. Recommandations générales pour l’utilisation de bibliothèques tierces :
  • Pour obtenir des claims à partir d’un JWT, utilisez la méthode verify() pour valider les claims et la signature. Évitez d’utiliser la méthode decode() pour valider un jeton, surtout s’il provient d’un .
  • Suivez attentivement toutes les instructions d’utilisation de la bibliothèque choisie. La bibliothèque pourrait s’appuyer sur des valeurs ou des paramètres par défaut susceptibles d’entraîner des risques de sécurité.

Implémenter manuellement les vérifications

Nous déconseillons la validation manuelle des JWT, car il est facile de mal l’implémenter et d’omettre des détails importants, ce qui peut entraîner de graves vulnérabilités de sécurité. La plupart des bibliothèques JWT s’occupent de la validation des JWT pour vous. Consultez JWT.io pour trouver une bibliothèque JWT pour votre plateforme et votre langage de programmation. Pour savoir comment valider manuellement un JWT, consultez la RFC 7519. Tous les JWT émis par Auth0 ont une JSON Web Signature (JWS), ce qui signifie qu’ils sont signés plutôt que chiffrés.

Vérifier les jetons signés avec RS256

Pour vérifier visuellement des jetons signés avec RS256 :
  1. Accédez à Auth0 Dashboard > Applications.
  2. Accédez à la vue Settings, puis ouvrez Advanced Settings.
  3. Accédez à la vue Certificates, repérez le champ Signed Certificate, puis copiez la Public Key.
  4. Accédez au site Web JWT.io, repérez la liste déroulante Algorithm, puis sélectionnez RS256.
  5. Repérez la section Verify Signature, puis collez la Public Key que vous avez copiée précédemment à la place du contenu du champ qui commence par -----BEGIN PUBLIC KEY-----.
Pour vérifier la signature d’un jeton provenant de l’une de vos applications : Nous vous recommandons de récupérer la Public Key dans le JWKS de votre locataire à l’adresse suivante : https://{yourDomain}/.well-known/jwks.json

Pour en savoir plus