Implémentation de l'authentification par jeton Bearer dans Node.js avec Express

Sécuriser API REST/microservices est vital. Authentification par jeton Bearer est populaire. Ce blog: config, bases, bonnes pratiques pour une sécurité robuste.

Louis Dupont

Louis Dupont

5 June 2025

Implémentation de l'authentification par jeton Bearer dans Node.js avec Express

À l'ère des API RESTful et des microservices, la sécurisation de vos points de terminaison est absolument essentielle. Une méthode populaire et efficace pour garantir que seuls les utilisateurs autorisés peuvent accéder à des ressources spécifiques est l'authentification par jeton Bearer. Dans ce blog, nous allons explorer comment implémenter l'authentification par Bearer Token dans une application Node.js en utilisant Express. Nous aborderons les bases des Bearer Tokens, comment les configurer dans votre application et les meilleures pratiques pour garantir une architecture de sécurité robuste.

💡
Apidog est un outil puissant conçu pour améliorer l'efficacité du développement d'API en offrant une suite complète de fonctionnalités pour la création, le test et la documentation des API. Il propose également des outils pratiques pour obtenir des jetons d'authentification API de toutes sortes. C'est gratuit ! Essayez-le dès aujourd'hui !
button

Qu'est-ce que l'authentification par Bearer Token ?

L'authentification par Bearer Token implique l'émission d'un jeton lors de l'authentification de l'utilisateur, que le client doit inclure dans l'en-tête Authorization des requêtes suivantes. Ce jeton agit comme un "porteur" d'informations d'identification, ce qui signifie que toute personne possédant le jeton peut accéder aux ressources associées. Les JSON Web Tokens (JWT) sont une forme couramment utilisée de Bearer Tokens en raison de leur nature sans état et de leur flexibilité.

Étape 1 : Configuration de votre application Node.js et Express

Avant de nous plonger dans l'implémentation des Bearer Tokens, configurons une application Node.js et Express de base. Nous commencerons par initialiser un nouveau projet et installer les dépendances nécessaires.

1. Initialiser un nouveau projet :

mkdir express-bearer-token && cd express-bearer-token
npm init -y

2. Installer les packages requis :

npm install express body-parser jsonwebtoken

3. Configurer le serveur de base :

Créez un fichier index.js et configurez un serveur Express :

const express = require('express');
const bodyParser = require('body-parser');
const jwt = require('jsonwebtoken');

const app = express();
const PORT = 3000;
const SECRET_KEY = 'your_secret_key';

app.use(bodyParser.json());

app.get('/', (req, res) => {
    res.send('Welcome to the Bearer Token Authentication Tutorial!');
});

app.listen(PORT, () => {
    console.log(`Server is running on http://localhost:${PORT}`);
});

Étape 2 : Génération d'un JWT

Tout d'abord, vous devez créer un point de terminaison pour la connexion de l'utilisateur afin de générer et de renvoyer un jeton JWT. Pour simplifier, nous utiliserons un utilisateur factice.

1. Ajouter une route de connexion :

const users = {
    user1: { username: 'user1', password: 'password1' }  // Dummy user
};

app.post('/login', (req, res) => {
    const { username, password } = req.body;
    const user = users[username];

    if (user && user.password === password) {
        const token = jwt.sign({ username }, SECRET_KEY, { expiresIn: '1h' });
        res.json({ token });
    } else {
        res.status(401).send('Invalid credentials');
    }
});

Étape 3 : Protection des routes avec Bearer Token

Pour protéger certaines routes, vous aurez besoin d'un middleware qui valide le Bearer Token des requêtes entrantes.

1. Créer un middleware d'authentification :

Créez une fonction middleware pour vérifier le jeton Bearer. Ce middleware vérifiera l'en-tête Authorization dans les requêtes entrantes et vérifiera le jeton à l'aide d'une clé secrète.

const authenticateToken = (req, res, next) => {
    const authHeader = req.headers['authorization'];
    const token = authHeader && authHeader.split(' ')[1];  // Bearer <token>

    if (token == null) return res.sendStatus(401);  // No token present

    jwt.verify(token, SECRET_KEY, (err, user) => {
        if (err) return res.sendStatus(403);  // Invalid token

        req.user = user;
        next();
    });
};

2. Création de routes :

Créez des routes pour la connexion et une route protégée qui nécessite une authentification.

const users = [
  { id: 1, username: 'user1', password: 'password1' },
  { id: 2, username: 'user2', password: 'password2' }
];

app.post('/login', (req, res) => {
  const { username, password } = req.body;
  const user = users.find(u => u.username === username && u.password === password);

  if (!user) {
    return res.status(400).send('Username or password is incorrect');
  }

  const token = jwt.sign({ username: user.username }, 'your_jwt_secret_key', { expiresIn: '1h' });
  res.json({ token });
});

app.get('/protected', authenticateToken, (req, res) => {
  res.send('This is a protected route');
});

Étape 4 : Test de l'implémentation

Exécutez votre serveur :

node app.js

Pour tester l'implémentation :

  1. Connexion : Envoyez une requête POST à /login avec un corps JSON contenant un username et un password valides. Si les informations d'identification sont correctes, vous recevrez un JWT.
  2. Accès à la route protégée : Envoyez une requête GET à /protected avec l'en-tête Authorization défini sur Bearer <your_token>. Si le jeton est valide, vous pourrez accéder à la route protégée.

Test de l'authentification API Bearer Token avec Apidog

L'authentification par jeton Bearer est une méthode courante utilisée dans les applications web pour sécuriser les requêtes API. Apidog, un outil API polyvalent, simplifie ce processus, permettant aux développeurs d'authentifier les requêtes API sans effort. Voici un guide étape par étape sur la façon dont vous pouvez tester l'authentification API Bearer token en utilisant Apidog.

Étape 1 : Configuration d'Apidog

  1. Télécharger et installer Apidog : Téléchargez Apidog et suivez les instructions d'installation pour votre système d'exploitation.
  2. Créer un nouveau projet : Ouvrez Apidog et créez un nouveau projet où vous pourrez gérer vos requêtes et tests API.

Étape 2 : Ajout d'un Bearer Token à la requête API

1. Sélectionnez l'authentification par Bearer Token : Dans le tableau de bord du projet, créez une nouvelle requête API. Accédez à "Auth" et sélectionnez "Bearer Token" dans le menu déroulant.

2. Entrez le jeton : Entrez directement la valeur de votre jeton. Apidog le préfixe automatiquement avec "Bearer" pour la requête réelle.

3. Envoyer la requête : Avec le jeton Bearer défini, envoyez la requête. Apidog inclura le jeton dans l'en-tête d'autorisation, vous permettant d'accéder aux ressources protégées.

Étape 3 : Vérification de la réponse

Après avoir envoyé la requête, vérifiez la réponse pour vous assurer que l'appel API a réussi. Un statut 200 OK indique généralement une authentification réussie.

Send API request with bearer token at Apidog.

Pourquoi choisir Bearer Token pour l'authentification API ?

L'authentification par jeton Bearer est largement choisie pour l'authentification API en raison de plusieurs avantages :

  1. Sans état : Les jetons Bearer permettent au serveur d'authentifier les requêtes sans maintenir l'état de la session, ce qui facilite la mise à l'échelle des applications.
  2. Simplicité : Les jetons sont faciles à implémenter et à utiliser, généralement inclus dans l'en-tête HTTP Authorization.
  3. Sécurité : Les jetons peuvent être chiffrés et avoir des délais d'expiration, ce qui améliore la sécurité.
  4. Interopérabilité : Les jetons Bearer sont standardisés et peuvent être utilisés sur différentes plateformes et services, favorisant l'interopérabilité.

Ces avantages font des jetons Bearer une option robuste et flexible pour sécuriser les API.

Meilleures pratiques pour la sécurité des Bearer Tokens

1. Utiliser des clés secrètes fortes :

Assurez-vous que votre clé secrète utilisée pour signer les JWT est complexe et stockée en toute sécurité. Évitez de la coder en dur dans votre base de code - envisagez d'utiliser des variables d'environnement.

2. Expiration du jeton :

Définissez toujours un délai d'expiration pour les jetons afin de minimiser le risque d'utilisation abusive s'ils sont volés. Faites régulièrement pivoter et invalidez les jetons.

3. HTTPS :

Utilisez HTTPS pour protéger les données en transit, y compris les Bearer Tokens, en assurant le chiffrement entre le client et le serveur.

4. Stockage sécurisé :

Côté client, stockez les jetons en toute sécurité. Les cookies HTTP-only et Secure sont souvent le meilleur choix par rapport au stockage local ou au stockage de session.

5. Limitation du débit et surveillance :

Implémentez une limitation du débit pour empêcher les attaques par force brute. De plus, surveillez vos API pour toute tentative d'accès non autorisée.

6. Liste noire des jetons compromis :

Maintenez un mécanisme pour invalider les jetons, tel qu'une liste noire, en cas de besoin de révoquer l'accès immédiatement.

Conclusion

L'authentification par Bearer Token utilisant JWT dans une application Node.js et Express offre une approche robuste et évolutive pour sécuriser vos API. En suivant les étapes décrites dans ce blog, vous pouvez implémenter une authentification sécurisée basée sur des jetons et protéger efficacement vos ressources.

La sécurité est un processus continu, et bien que les Bearer Tokens offrent de nombreux avantages, restez toujours informé des dernières meilleures pratiques et menaces en matière de sécurité. Avec cette base, vous êtes en bonne voie pour créer des API sécurisées, évolutives et efficaces dans Node.js en utilisant Express.

Explore more

Le curseur est désormais gratuit pour les étudiants du monde entier ! Voici comment l'obtenir :

Le curseur est désormais gratuit pour les étudiants du monde entier ! Voici comment l'obtenir :

Cursor offre un plan Pro gratuit aux étudiants. Découvrez comment obtenir un an gratuit, boostez votre code avec Apidog et l'IA.

7 May 2025

Serveur MCP Apidog : Permettre le codage IA directement à partir des spécifications API

Serveur MCP Apidog : Permettre le codage IA directement à partir des spécifications API

Nous avons créé Apidog MCP pour révolutionner le développement API ! Connectez l'IA (Cursor) à vos projets, docs ou fichiers OpenAPI.

18 April 2025

Google Gemini Advanced est désormais gratuit pour les étudiants – Voici comment l'obtenir

Google Gemini Advanced est désormais gratuit pour les étudiants – Voici comment l'obtenir

Accès GRATUIT aux outils IA Google (Gemini, NotebookLM, 2To stockage) pour étudiants US. Inscrivez-vous avant le 30 juin 2025 !

18 April 2025

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API