JSON Web Tokens, ou JWT, est une norme de jeton d'accès qui vise à sécuriser la communication entre deux parties (client et serveur, par exemple). JWT est un moyen efficace de gérer l'authentification et l'autorisation dans les applications NodeJS. Dans ce chapitre de notre cours, nous apprendrons comment sécuriser les routes avec JWT dans NodeJS.
Pour commencer, nous devons comprendre ce qu'est JWT. JWT est une chaîne codée transmise entre le client et le serveur pour valider l'identité de l'utilisateur et garantir la sécurité des informations transmises. Le jeton est composé de trois parties : l'en-tête, la charge utile et la signature.
L'en-tête contient des informations sur le type de jeton et l'algorithme de chiffrement utilisé. La charge utile contient les revendications ou les données que vous souhaitez transmettre. 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 contenu n'a pas été modifié.
Pour travailler avec JWT dans NodeJS, nous aurons besoin de la bibliothèque jsonwebtoken. Pour l'installer, vous pouvez utiliser la commande suivante dans le terminal :
Une fois la bibliothèque installée, nous pouvons commencer à créer des jetons. Voici un exemple de la façon dont vous pouvez créer un jeton JWT dans NodeJS :
Dans cet exemple, nous créons un jeton JWT qui contient les données de l'utilisateur. La clé secrète 'mysecretkey' est utilisée pour signer le token.
Maintenant que nous avons un jeton, nous pouvons l'utiliser pour protéger nos itinéraires. Pour ce faire, nous devons créer un middleware qui vérifiera la présence du jeton JWT à chaque requête. Voici un exemple de la façon dont vous pouvez procéder :
Dans cet exemple, le middleware « authentifier » extrait le jeton de l'en-tête « autorisation » de la requête. Si le token n'est pas présent, la requête est rejetée avec un statut 401. Si le token est présent, il est vérifié à l'aide de la fonction 'jwt.verify'. Si la vérification échoue, la demande est rejetée avec un statut de 401. Si la vérification réussit, les données du jeton décodées sont ajoutées à la demande et la demande est transmise au middleware suivant.
Avec ce middleware, nous pouvons sécuriser n'importe quelle route en l'incluant simplement dans la chaîne middleware de la route. Voici un exemple :
Dans cet exemple, la route '/protected' ne sera accessible que si la requête inclut un jeton JWT valide dans l'en-tête 'authorization'.
En résumé, JWT est un moyen puissant et flexible de gérer l'authentification et l'autorisation dans les applications NodeJS. Avec la bibliothèque jsonwebtoken, nous pouvons facilement créer et vérifier des jetons JWT, et avec le concept middleware, nous pouvons facilement sécuriser nos routes. J'espère que ce chapitre vous a permis de bien comprendre comment utiliser JWT dans NodeJS.
Dans la section suivante, nous aborderons d'autres techniques d'authentification et d'autorisation dans NodeJS. Restez à l'écoute !