Auth0 jwt exemple
Premiers pas avec les jetons Web JSON
Qu’est-ce que le jeton Web JSON ?
JSON Web Token (JWT) est une norme ouverte (RFC 7519) qui définit une manière compacte et autonome pour transmettre en toute sécurité des informations entre les parties en tant qu’objet JSON. Ces informations peuvent être vérifiées et fiables car elles sont signées numériquement. Les JWT peuvent être signés à l’aide d’un secret (avec l’algorithme HMAC) ou d’une paire de clés publique/privée à l’aide de RSA .
Expliquons plus en détail certains concepts de cette définition.
- Compact : En raison de sa taille, il peut être envoyé via une URL, un paramètre POST ou à l’intérieur d’un en-tête HTTP. De plus, en raison de sa taille, sa transmission est rapide.
- Autonome : La charge utile contient tous les éléments nécessaires informations sur l’utilisateur, afin d’éviter d’interroger la base de données plus d’une fois.
Quand devriez-vous utiliser des jetons Web JSON ?
Voici quelques scénarios où les jetons Web JSON sont utiles :
- Authentification : Il s’agit du scénario typique d’utilisation de JWT, une fois que l’utilisateur est connecté, chaque requête suivante inclura le JWT, permettant à l’utilisateur d’accéder aux routes, services et ressources autorisés avec ce jeton. L’authentification unique est une fonctionnalité qui utilise largement JWT de nos jours, en raison de sa faible surcharge et de sa capacité à être facilement utilisée entre les systèmes de différents domaines.
- Échange d’informations : Les JWT sont un bon moyen de transmettre en toute sécurité des informations entre les parties, car comme ils peuvent être signés, par exemple à l’aide d’une paire de clés publique/privée, vous pouvez être sûr que la L’expéditeur est celui qu’il prétend être. De plus, comme la signature est calculée à l’aide de l’en-tête et de la charge utile, vous pouvez également vérifier que le contenu n’a pas changé.
Quelle est la structure du JSON Web Token ?
Les JWT se composent de trois parties séparées par des points (), qui sont les suivantes :
Par conséquent, un JWT ressemble généralement à ce qui suit.
Décomposons les différentes parties.
L’en-tête se compose généralement de deux parties : le type du jeton, qui est JWT, et l’algorithme de hachage tel que HMAC SHA256 ou RSA.
Par exemple :
Ensuite, ce JSON est encodé en Base64Url pour former la première partie du JWT.
La
deuxième partie du jeton est la charge utile, qui contient les revendications. Les revendications sont des déclarations concernant une entité (généralement, l’utilisateur) et des métadonnées supplémentaires. Il existe trois types de créances : les créances réservées , publiques et privées.
-
- Revendications réservées : Il s’agit d’un ensemble de revendications prédéfinies, qui ne sont pas obligatoires mais recommandées, pensées pour fournir un ensemble de revendications utiles et interopérables. Certains d’entre eux sont : iss (émetteur), exp (délai d’expiration), sub (sujet), aud (audience), entre autres.
Notez que les noms de revendication ne comportent que trois caractères, car JWT est censé être compact.
- Revendications publiques : Celles-ci peuvent être définies à volonté par ceux qui utilisent les JWT. Mais pour éviter les collisions, ils doivent être définis dans le registre IANA JSON Web Token ou être défini comme un URI qui contient un espace de noms résistant aux collisions.
- Revendications privées : Il s’agit des revendications personnalisées créées pour partager des informations entre les parties qui acceptent de les utiliser.
Voici un exemple de charge utile :
La charge utile est ensuite encodée en Base64Url pour former la deuxième partie du JWT.
Signature
Pour créer la partie signature, vous devez prendre l’en-tête codé, la charge utile codée, un secret, l’algorithme spécifié dans l’en-tête, et le signer.
Par exemple, si vous souhaitez utiliser l’algorithme HMAC SHA256, la signature sera créée de la manière suivante.
La signature est utilisée pour vérifier que l’expéditeur du JWT est bien celui qu’il prétend être et pour s’assurer que le message n’a pas été modifié en cours de route.
La
sortie est de trois Base64 des chaînes séparées par des points qui peuvent être facilement transmises dans les environnements HTML et HTTP, tout en étant plus compactes par rapport aux normes basées sur XML telles que SAML.
Ce qui suit montre un JWT dont l’en-tête et la charge utile précédents sont codés et qui est signé avec un code secret.
Vous pouvez naviguer jusqu’à jwt.io où vous pouvez jouer avec un JWT et mettre ces concepts en pratique. jwt.io vous permet de décoder, vérifier et générer des JWT.
Comment fonctionnent les JSON Web Tokens ?
Dans le cadre de l’authentification, lorsque l’utilisateur se connecte avec succès à l’aide de ses informations d’identification, un jeton Web JSON est renvoyé. Étant donné que les jetons sont des informations d’identification, il faut faire très attention à prévenir les problèmes de sécurité. En général, vous ne devez pas conserver les jetons plus longtemps que nécessaire.
Vous ne devez pas non plus stocker de données de session sensibles dans le stockage du navigateur en raison d’un manque de sécurité.
Chaque fois que l’utilisateur souhaite accéder à une route protégée, il doit envoyer le JWT, généralement dans l’en-tête Authorization à l’aide du schéma Bearer. Par conséquent, le contenu de l’en-tête doit ressembler à ce qui suit.
Il s’agit d’un mécanisme d’authentification sans état, car l’état de l’utilisateur n’est jamais enregistré dans la mémoire du serveur. Les routes protégées du serveur vérifieront la présence d’un JWT valide dans l’en-tête Authorization, et si c’est le cas, l’utilisateur sera autorisé. Comme les JWT sont autonomes, toutes les informations nécessaires sont là, ce qui réduit le besoin de revenir en arrière et en avant dans la base de données.
Cela permet de s’appuyer entièrement sur des API de données sans état et même d’envoyer des requêtes aux services en aval.
Pourquoi devriez-vous utiliser des jetons Web JSON ?
Parlons des avantages des JSON Web Tokens (JWT) en le comparant aux Simple Web Tokens (SWT) et aux Security Assertion Markup Language Tokens (SAML).
Comme JSON est moins verbeux que XML, lorsqu’il est encodé, sa taille est également plus petite, ce qui rend JWT plus compact que SAML. Cela fait de JWT un bon choix pour être passé dans les environnements HTML et HTTP.
Du point de vue de la sécurité, SWT ne peut être signé symétriquement que par un secret partagé à l’aide de l’algorithme HMAC. Les jetons JWT et SAML peuvent également utiliser une paire de clés publique/privée sous la forme d’un certificat X.509 pour les signer. Cependant, signer du XML avec une signature numérique XML sans introduire de failles de sécurité obscures est très difficile par rapport à la simplicité de la signature JSON.
Les analyseurs JSON sont courants dans la plupart des langages de programmation, car ils sont mappés directement aux objets, à l’inverse, XML n’a pas de mappage naturel document-objet. Il est donc plus facile de travailler avec JWT que Assertions SAML.
En ce qui concerne l’utilisation, JWT est utilisé à l’échelle d’Internet. Cela met en évidence la facilité de traitement côté client des JWT sur plusieurs plateformes, en particulier les mobiles.
Comment utilisons-nous les jetons Web JSON dans Auth0 ?
Dans Auth0, nous émettons des JWT à la suite du processus d’authentification. Lorsque l’utilisateur se connecte à l’aide d’Auth0, un JWT est créé, signé et envoyé à l’utilisateur. Auth0 prend en charge la signature JWT avec les algorithmes HMAC et RSA. Ce jeton sera ensuite utilisé pour s’authentifier et autoriser auprès des API qui accorderont l’accès à leurs routes et ressources protégées.
Nous utilisons également des JWT pour effectuer l’authentification et l’autorisation dans l’API v2 d’Auth0, remplaçant ainsi l’utilisation traditionnelle de clés API opaques régulières. En ce qui concerne l’autorisation, les JSON Web Tokens permettent une sécurité granulaire, c’est-à-dire la possibilité de spécifier un ensemble particulier d’autorisations dans le token, qui améliore la débogage.
Commencez
à créer dès aujourd’hui et sécurisez vos applications avec la plateforme d’identité Auth0 dès aujourd’hui.
Essayer gratuitement