Skip to main content

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.
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 ne sont pas 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, rendez-vous sur JWT.io ou utilisez la JWT Debugger Chrome Extension).
La signature d’un jeton JWT est générée à l’aide d’un . Bien que les jetons puissent utiliser plusieurs , Auth0 prend en charge RS256, soit le chiffrement RSA avec la fonction de hachage SHA-256, ou HS256, soit le code d’authentification de message HMAC (MAC) avec SHA-256. Pour en savoir plus sur l’algorithme recommandé par Auth0, consultez Algorithmes de signature. Lors de la validation d’un JWT, en général, la valeur de hachage actuelle et la valeur de hachage d’origine sont analysées, c’est-à-dire décodées, puis comparées pour vérifier que la signature du jeton est authentique. Tous nos Quickstarts d’API backend utilisent des SDKs qui effectuent pour vous la validation et l’analyse des JWT.

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 : 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’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 argument algorithms 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éthode decode() 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 :
  1. Accédez à Dashboard > Applications.
  2. Allez à l’onglet Settings, puis ouvrez Advanced Settings.
  3. Allez à l’onglet Certificates, repérez le champ Signed Certificate et copiez la Public Key.
  4. Accédez au site Web JWT.io, repérez la liste déroulante Algorithm et sélectionnez RS256.
  5. 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-----.
Pour vérifier la signature d’un jeton provenant de l’une de vos applications : Nous vous recommandons d’obtenir la Public Key à partir du JWKS de votre tenant ici : https://{yourDomain}/.well-known/jwks.json

En savoir plus