18.7. Travailler avec des jetons Web JSON (JWT) dans NodeJS : comment ajouter des informations supplémentaires dans un JWT

Página 116

Les jetons Web JSON (JWT) sont un moyen populaire d'ajouter une authentification et une autorisation aux applications Web et mobiles. Dans NodeJS, vous pouvez utiliser le package jsonwebtoken pour créer, vérifier et décoder les jetons JWT. Dans cette section, nous découvrirons comment utiliser les JWT dans NodeJS et comment ajouter des informations supplémentaires à un jeton JWT.

Tout d'abord, il est important de comprendre ce qu'est un JWT. Un JWT est une représentation compacte et sécurisée d'une série de revendications qui peuvent être échangées entre deux parties. Les réclamations sont des informations que vous souhaitez transmettre en toute sécurité entre les parties. Un jeton JWT se compose de trois parties : un en-tête, une charge utile et une signature.

L'en-tête contient généralement deux parties : le type de jeton, qui est JWT, et l'algorithme de signature, tel que HMAC SHA256 ou RSA. La charge utile contient les revendications que vous souhaitez diffuser. Les revendications peuvent être des déclarations sur une entité (généralement l'utilisateur) et des données supplémentaires. La signature est utilisée pour vérifier que l'expéditeur du JWT est bien celui qu'il prétend être et pour garantir que le message n'a pas été modifié en cours de route.

Pour commencer à travailler avec les JWT dans NodeJS, vous devrez installer le package jsonwebtoken. Vous pouvez le faire en utilisant npm, le gestionnaire de packages NodeJS, avec la commande : npm install jsonwebtoken.

Une fois installé, vous pouvez importer le package jsonwebtoken dans votre code avec la commande suivante : const jwt = require('jsonwebtoken').

Pour créer un jeton JWT, vous pouvez utiliser la méthode jwt.sign(). Cette méthode accepte trois arguments : la charge utile, une clé secrète et un objet options. La charge utile est l'ensemble des revendications que vous souhaitez inclure dans le jeton. La clé secrète est utilisée pour signer le token et garantir son intégrité. L'objet options peut inclure diverses options telles que l'algorithme de signature à utiliser et la durée de vie du token.

Par exemple, vous pouvez créer un jeton JWT avec les revendications suivantes : ID utilisateur et nom d'utilisateur, comme ceci :

laissez la charge utile = { ID utilisateur : '123', Nom d'utilisateur : 'John Doe' } ; laissez secretKey = 'mySecretKey'; laissez les options = { algorithme : 'HS256', expire dans : '1h' } ; let token = jwt.sign(payload, secretKey, options);

Le jeton résultant sera une chaîne que vous pourrez transmettre au client. Le client peut ensuite utiliser ce jeton pour authentifier les demandes ultérieures.

Pour ajouter des informations supplémentaires à un jeton JWT, vous pouvez simplement ajouter plus de propriétés à l'objet de charge utile. Par exemple, si vous souhaitez ajouter l'adresse e-mail et le rôle de l'utilisateur, vous pouvez procéder comme suit :

laissez la charge utile = { ID utilisateur : '123', Nom d'utilisateur : 'John Doe', e-mail de l'utilisateur : '[email protected]', Rôle utilisateur : 'admin' } ; let token = jwt.sign(payload, secretKey, options);

Ces informations supplémentaires seront incluses dans le jeton JWT et pourront être utilisées pour prendre des décisions d'autorisation sur le serveur. Par exemple, vous pouvez vérifier le rôle de l'utilisateur pour déterminer s'il est autorisé à accéder à une ressource spécifique.

Pour vérifier un jeton JWT et extraire les revendications, vous pouvez utiliser la méthode jwt.verify(). Cette méthode prend trois arguments : le jeton, la clé secrète et un objet options. La méthode renvoie la charge utile si le jeton est valide et renvoie une erreur si le jeton est invalide ou a expiré.

Par exemple, vous pouvez vérifier un jeton et extraire les revendications comme suit :

laissez jeton = '...'; // le jeton JWT reçu du client essayer { laissez payload = jwt.verify(token, secretKey); console.log(charge utile); } attraper (erreur) { console.log('Jeton invalide ou expiré'); }

L'objet de charge utile résultant contiendra toutes les revendications que vous avez incluses lors de la création du jeton, y compris toutes les informations supplémentaires que vous avez ajoutées.

En résumé, les JWT constituent un moyen puissant et flexible d'ajouter une authentification et une autorisation à vos applications NodeJS. Vous pouvez inclure toutes les informations que vous souhaitez sur le jeton, à condition que vous sachiez que les informations sur le jeton peuvent être lues par toute personne possédant le jeton. Par conséquent, vous devez éviter d'inclure des informations sensibles dans le jeton, sauf si le jeton est chiffré.

Répondez maintenant à l’exercice sur le contenu :

Qu'est-ce qu'un jeton Web JSON (JWT) et comment est-il utilisé dans NodeJS ?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Page suivante de lebook gratuit :

11718.8. Travailler avec des jetons Web JSON (JWT) dans NodeJS : comment révoquer un JWT

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6,5 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte