17.1. Authentification et autorisation dans les API NodeJS : Authentification avec JWT
Page 99 | Écouter en audio
17.1. Authentification et autorisation dans les API NodeJS : authentification avec JWT
L'authentification et l'autorisation sont des éléments cruciaux dans la création d'API dans NodeJS. Ils garantissent la sécurité des données manipulées par l'API, permettant uniquement aux utilisateurs autorisés d'accéder à certaines ressources. Ce chapitre de l'ebook se concentrera sur l'authentification avec JWT (JSON Web Tokens).
Qu'est-ce que JWT ?
JSON Web Tokens (JWT) est une norme ouverte (RFC 7519) qui définit une manière compacte et autonome 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.
Pourquoi utiliser JWT pour l'authentification ?
Les JWT sont un bon choix pour l'authentification pour plusieurs raisons. Premièrement, ils sont apatrides. Cela signifie que nous n'avons pas besoin de stocker les informations de session sur le serveur ou dans une base de données. Au lieu de cela, toutes les informations nécessaires sont stockées dans le jeton et envoyées au serveur à chaque demande. Cela permet à notre application d'être évolutive et facile à gérer.
Deuxièmement, les JWT sont compacts et peuvent être envoyés via une URL, dans un en-tête HTTP ou dans un cookie. Cela les rend très pratiques pour l'authentification, en particulier dans les applications à page unique (SPA).
Comment fonctionne l'authentification JWT ?
L'authentification auprès de JWT implique généralement les étapes suivantes :
- L'utilisateur envoie ses identifiants au serveur.
- Le serveur vérifie les informations d'identification et, si elles sont valides, génère un JWT qui est renvoyé à l'utilisateur.
- L'utilisateur stocke le JWT d'une manière ou d'une autre (par exemple, dans un cookie ou dans un stockage local).
- L'utilisateur envoie le JWT à chaque requête ultérieure au serveur.
- Le serveur vérifie le JWT et, s'il est valide, traite la demande.
- Si le JWT n'est pas valide (par exemple, s'il a expiré), le serveur rejette la demande.
Implémentation de l'authentification avec JWT dans NodeJS
Pour implémenter l'authentification JWT dans NodeJS, nous avons besoin du package jsonwebtoken. Nous pouvons l'installer en utilisant npm :
npm installer jsonwebtoken
Une fois le package installé, nous pouvons l'utiliser pour générer et vérifier des JWT. Voici un exemple de la façon dont nous pouvons procéder :
const jwt = require('jsonwebtoken');
// Générer un JWT
const token = jwt.sign({ id : user.id }, 'votre-clé-secret', { expiresIn : '1h' });
// Vérifier un JWT
essayer {
const décodé = jwt.verify(token, 'votre-clé-secrète');
console.log(decoded.id); // affichera l'identifiant de l'utilisateur
} attraper (erreur) {
console.error('Jeton invalide');
}
La fonction jwt.sign() génère un JWT. Il prend trois arguments : la charge utile (un objet qui contient les informations que nous voulons stocker dans le jeton), le secret (une chaîne utilisée pour signer le jeton) et les options (un objet qui peut contenir diverses propriétés, telles que expiresIn , qui définit la date d'expiration du jeton).
La fonction jwt.verify() vérifie un JWT. Cela prend deux arguments : le jeton et le secret. Si le jeton est valide, il renvoie la charge utile. S'il n'est pas valide, cela génère une erreur.
En résumé, l'authentification avec JWT dans NodeJS est un processus simple et efficace qui peut améliorer considérablement la sécurité de vos API. Avec JWT, vous pouvez vous assurer que seuls les utilisateurs autorisés ont accès à certaines ressources, ce qui rend votre application plus sécurisée et fiable. .
Répondez maintenant à l’exercice sur le contenu :
Que faut-il pour implémenter l'authentification avec JWT dans NodeJS ?
Tu as raison! Félicitations, passez maintenant à la page suivante
Vous avez raté! Essayer à nouveau.
Page suivante de lebook gratuit :