Valider les jetons Web JSON
Overview
Principaux concepts
Découvrez les jetons Web JSON (JWT) qu’utilise Auth0 pour l’accès, l’identifiant, l’actualisation et les jetons de déconnexion.
Passez en revue les algorithmes de signature pour comprendre ce qu’est une signature sur un jeton.
Validez les JWT pour vous assurer qu’ils n’ont pas été altérés.
Utilisez les troussses SDK d’Auth0, les logiciels médiateurs ou l’une des bibliothèques tierces sur JWT.io pour valider les JWT.
Auth0 l’utilise Jeton Web JSON (JWT) pour une transmission, une authentification et une autorisation sécurisées des données. Les jetons doivent être analysés et vérifiés dans des applications Web classiques, natives et à page unique pour garantir qu’ils ne sont pas compromis et que la signature est authentique. Les jetons doivent être vérifiés pour réduire les risques de sécurité s’ils ont été, par exemple, falsifiés, utilisés à mauvais escient ou ont expiré. La vérification JWT vérifie la structure, les demandes et la signature pour garantir le moins de risque possible.
La signature du jeton JWT est générée à l’aide d’un Algorithme de signature. Bien que les jetons puissent utiliser plusieurs algorithmes de signature, Auth0 prend en charge le cryptage RS256, RSA avec fonction de hachage SHA-256 ou HS256, code d’authentification de message HMAC (MAC) avec SHA-256. Pour en savoir plus sur les algorithmes recommandés d’Auth0, lisez Algorithmes de signature.
Lors de la vérification d’un JWT, généralement, 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 démarrages rapides d'API du système dorsal utilisent des trousses SDK qui effectuent la validation et l’analyse de JWT pour vous.
Vérifier et valider
Si vous n’utilisez pas l’une de nos trousses SDK qui réalisent la vérification et l’analyse des JWT pour vous, vous pouvez analyser et vérifier un JWT en :
Utiliser n’importe quel logiciel médiateur existant pour votre cadre d’applications Web.
Choisir une bibliothèque tierce sur JWT.io.
Implémenter manuellement les vérifications décrites dans specification RFC 7519 > 7.2 Validating a JWT.
Nous vous recommandons vivement d'utiliser un logiciel médiateur ou l'une des bibliothèques tierces au code source libre existantes pour analyser et valider les JWT. Dans JWT.io, vous trouverez des bibliothèques pour différentes plateformes et différents langages, comme .NET, Python, Java, Ruby, Objective-C, Swift et PHP.
Logiciel médiateur
De nombreux cadres d’applications Web, tels que ASP.NET Core, incluent un logiciel médiateur JWT qui gère la vérification JWT. Il s’agit généralement de la meilleure voie à suivre, car le logiciel médiateur s’intègre bien aux mécanismes d’authentification globaux du cadre d’applications.
Bibliothèques tierces
Si vous optez pour une bibliothèque tierce, choisissez-en une qui prend en charge l’algorithme de signature sélectionné lors de l’enregistrement de votre application ou API auprès d’Auth0. Aussi, sachez que ce ne sont pas toutes les bibliothèques vérifient les demandes JWT. Sur JWT.io, vous pouvez voir les vérifications prises en charge par chaque bibliothèque (recherchez les crochets verts).
La plupart des bibliothèques tierces implémentent une méthode pour vérifier un JWT et intègrent divers arguments pour vous permettre de personnaliser la vérification. Par exemple, si vous utilisez Node.js et la bibliothèque node-jsonwebtoken, vous appelleriez donc la méthode jwt.verify(). Cette méthode prend en charge un argument d’algorithmes
pour vous permettre de personnaliser vos algorithmes autorisés (asurez-vous de désactiver none
), un argument secretOrPublicKey
que vous remplissez avec soit le secret ou la clé RSA publique (en fonction de l’algorithme de signature sélectionné) et d’autres arguments d’entrée qui vous permettent de personnaliser la vérification des demandes. Si l’analyse l’échoue, la bibliothèque renvoie une erreur JsonWebTokenError avec le message jwt malformed
, après lequel vous devez rejetez la demande associée.
Recommandations générales pour l’utilisation de bibliothèques tierces :
Pour obtenir des demandes de JWT, utilisez la méthode
verify()
pour vérifier les demandes et la signature. Évitez d’utiliser la méthodedecode()
pour vérifier un jeton, surtout s’il provient d’un client public.Suivez attentivement toutes les instructions sur la façon d’utiliser la bibliothèque choisie. La bibliothèque pourrait s’appuyer sur des valeurs ou des paramètres par défaut susceptibles de créer des risques de sécurité.
Implémenter manuellement les vérifications
Nous déconseillons d’effectuer une vérification JWT manuelle, car elle pourrait facilement entraîner une mauvaise implémentation et certains détails importants pourraient manquer, ce qui entraîneraient de graves vulnérabilités de sécurité. La plupart des bibliothèques JWT s’occupent de la vérification des JWT pour vous. Visitez JWT.io pour trouver une bibliothèque de JWT pour votre plateforme et votre langage de programmation.
Pour obtenir des instructions sur la façon de vérifier manuellement un JWT, consultez RFC 7519. Tous les JWT émis par Auth0 ont une signature Web JSON (JWS), ce qui signifie qu’ils sont signés plutôt que chiffrés.
Vérifier les jetons signés RS256
Pour vérifier visuellement les jetons signés RS256 :
Allez à Dashboard > Applications.
Allez à la vue des Paramètres, et ouvrez Paramètres avancés.
Allez à la vue Certificats, trouvez le champ Certificat signé, et copiez la Clé publique.
Naviguez vers le site Web JWT.io, trouvez le menu déroulant Algorithme, et sélectionnez RS256.
Trouvez la section Vérifier la signature, et collez la clé publique précédemment copiée à la place du contenu dans le champ qui commence avec
-----BEGIN PUBLIC KEY-----
.
Pour vérifier la signature d’un jeton d’une de vos applications :
Nous vous recommandons d’obtenir la clé publique du JWKS de votre locataire ici :
https://{yourDomain}/.well-known/jwks.json