Aperçu
Concepts clés
- Découvrez les JSON Web Tokens (JWTs) qu’Auth0 utilise pour les jetons d’accès, d’ID, d’actualisation et de logout.
- Consultez 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 Auth0 SDKs, le middleware ou l’une des bibliothèques tierces sur JWT.io pour valider les JWT.
Pour inspecter visuellement un JWT, rendez-vous sur JWT.io ou utilisez la JWT Debugger Chrome Extension).
Analyser et valider
Si vous n’utilisez pas l’un de nos SDKs qui effectuent la validation et l’analyse des JWT pour vous, 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.
- Effectuer manuellement les vérifications décrites dans la spécification RFC 7519 > 7.2 Validating a JWT.
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’option à privilégier, car le middleware s’intègre bien aux mécanismes d’authentification du framework.Bibliothèques tierces
Si vous choisissez une bibliothèque tierce, optez pour une bibliothèque qui prend en charge l’algorithme de signature que vous avez sélectionné lorsque vous avez enregistré votre application ou votre API auprès d’Auth0. Sachez également que certaines bibliothèques ne valident pas toutes 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 implémentent une méthode pour vérifier un JWT et intègrent divers arguments qui vous permettent de personnaliser la vérification. Par exemple, si vous utilisez Node.js et la bibliothèque node-jsonwebtoken, vous appellerez la méthode jwt.verify(). Cette méthode prend en charge un argumentalgorithms qui vous permet de personnaliser les algorithmes autorisés (assurez-vous d’interdire 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 qui vous permettent de personnaliser la validation des claims. Si l’analyse échoue, la bibliothèque renvoie une erreur JsonWebTokenError accompagnée du 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 les claims d’un JWT, utilisez la méthode
verify()pour valider les claims et la signature. Évitez d’utiliser la méthodedecode()pour valider un token, 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é.
Effectuer manuellement les vérifications
Nous déconseillons de valider les JWT manuellement, car il est facile de mal s’y prendre et d’omettre des détails importants, ce qui peut entraîner de graves failles 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 adaptée à votre plateforme et à votre langage de programmation. Pour savoir comment valider manuellement un JWT, consultez la RFC 7519. Tous les JWT émis par Auth0 comportent une signature Web JSON (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 :- Accédez à Dashboard > Applications.
- Allez à l’onglet Settings, puis ouvrez Advanced Settings.
- Allez à l’onglet Certificates, repérez le champ Signed Certificate et copiez la Public Key.
- Accédez au site Web JWT.io, repérez la liste déroulante Algorithm et sélectionnez RS256.
- Repérez la section Verify Signature et collez la Public Key que vous avez copiée précédemment à la place du contenu dans le champ qui commence par
-----BEGIN PUBLIC KEY-----.
https://{yourDomain}/.well-known/jwks.json