18.10. Travailler avec les jetons Web JSON (JWT) dans NodeJS
JSON Web Tokens (JWT) est une norme ouverte (RFC 7519) qui définit un moyen compact et sécurisé de transmettre 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 utilisant RSA ou ECDSA.
L'authentification basée sur JWT est un moyen populaire d'authentifier les applications Web. Avec l'authentification JWT, un jeton est stocké sur le client, qui est envoyé à chaque requête au serveur pour être authentifié.
Comment implémenter l'authentification basée sur JWT dans une API NodeJS
Pour implémenter l'authentification basée sur JWT dans une API NodeJS, vous aurez besoin des étapes suivantes :
- Installer le package jsonwebtoken
- Créez une route de connexion pour générer le jeton
- Vérifier le jeton à chaque demande
1. Installer le package jsonwebtoken
Tout d'abord, vous devrez installer le package jsonwebtoken dans votre projet NodeJS. Vous pouvez le faire en utilisant npm (Node Package Manager) avec la commande suivante :
2. Créez une route de connexion pour générer le jeton
Ensuite, vous devrez créer une route de connexion qui générera le jeton JWT. Voici un exemple de la façon dont vous pouvez procéder :
Dans l'exemple ci-dessus, nous authentifions d'abord l'utilisateur. Nous utilisons ensuite la fonction jwt.sign pour créer le jeton JWT. La fonction jwt.sign prend trois paramètres : la charge utile (dans ce cas, l'objet utilisateur), la clé secrète et une fonction de rappel.
3. Vérifier le jeton à chaque demande
Enfin, vous devrez vérifier le jeton JWT à chaque requête. Vous pouvez le faire en créant un middleware qui vérifie le jeton :
Dans l'exemple ci-dessus, le middleware AuthenticateToken vérifie si le jeton JWT est présent dans l'en-tête d'autorisation. Si le token est présent, il est vérifié à l'aide de la fonction jwt.verify. Si le jeton est valide, la demande est autorisée à se poursuivre. Si le jeton n'est pas valide, un statut d'erreur 403 (Interdit) est envoyé.
Et c'est tout ce dont vous avez besoin pour implémenter l'authentification basée sur JWT dans une API NodeJS !