Jetons JWT en JavaScript (Node.js) : Guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Jetons JWT en JavaScript (Node.js) : Guide complet de la bibliothèque jsonwebtoken

JSON Web Token (JWT) est un standard ouvert (RFC 7519) pour la création de jetons d'accès basés sur JSON. JWT est largement utilisé pour l'authentification et l'échange d'informations entre le client et le serveur. Dans l'écosystème Node.js, la bibliothèque la plus populaire pour travailler avec JWT est jsonwebtoken. Dans cet article, nous allons détailler comment installer, configurer et utiliser cette bibliothèque pour créer des applications web sécurisées.



Qu'est-ce que JWT et pourquoi en a-t-on besoin ?

JWT est une chaîne composée de trois parties séparées par des points : Header (en-tête), Payload (charge utile) et Signature. Le jeton ressemble à ceci : xxxxx.yyyyy.zzzzz. Les principaux avantages de JWT :

  • Sécurité — le jeton est signé avec une clé secrète ou une paire de clés (RSA/ECDSA), garantissant son intégrité.
  • Autosuffisance — toutes les informations nécessaires à la vérification de l'authenticité sont contenues dans le jeton lui-même, réduisant ainsi le nombre de requêtes à la base de données.
  • Multiplateforme — JWT fonctionne avec n'importe quel langage de programmation et plateforme.
  • Flexibilité — vous pouvez ajouter toutes les données personnalisées dans le payload (par exemple, ID utilisateur, rôle).


Installation de la bibliothèque jsonwebtoken

Pour travailler avec JWT dans Node.js, installez le paquet jsonwebtoken via npm :

npm install jsonwebtoken

Après l'installation, importez la bibliothèque dans votre fichier :

const jwt = require('jsonwebtoken');


Génération (signature) d'un jeton JWT

Pour créer un jeton, on utilise la méthode jwt.sign(payload, secretOrPrivateKey, options). Voici un exemple de base :

const jwt = require('jsonwebtoken');

const payload = { userId: 123, role: 'user'};

const secretKey = 'my_super_secret_key_123';

const token = jwt.sign(payload, secretKey, { expiresIn: '1h', // le jeton expire dans 1 heure algorithm: 'HS256' // algorithme de signature (par défaut HS256)});

console.log('Jeton généré :', token);

Important : Ne stockez jamais la clé secrète dans le code. Utilisez des variables d'environnement (fichier .env). Pour cela, installez le paquet dotenv :

npm install dotenv

Exemple d'utilisation avec des variables d'environnement :

require('dotenv').config();const jwt = require('jsonwebtoken');

const token = jwt.sign( { userId: 456 }, process.env.JWT_SECRET, { expiresIn: '7d' });


Vérification d'un jeton JWT

Pour vérifier l'authenticité d'un jeton, on utilise la méthode jwt.verify(token, secretOrPublicKey, options). Elle retourne le payload si le jeton est valide, ou lève une erreur si le jeton a expiré ou est invalide.

const token = 'votre_jeton_ici';

try { const decoded = jwt.verify(token, process.env.JWT_SECRET); console.log('Données décodées :', decoded); // { userId: 456, iat: 1700000000, exp: 1700600000 }} catch (err) { if (err.name === 'TokenExpiredError') { console.log('Le jeton a expiré'); } else if (err.name === 'JsonWebTokenError') { console.log('Jeton invalide'); } else { console.log('Erreur de vérification :', err.message); }}

Notez les champs iat (issued at — date de création) et exp (expiration time — date d'expiration), qui sont automatiquement ajoutés si le paramètre expiresIn est spécifié.



Middleware pour Express.js

Dans les applications réelles, JWT est généralement vérifié dans un middleware. Voici un exemple pour Express.js :

const express = require('express');const jwt = require('jsonwebtoken');require('dotenv').c                    

Recommendations