• 1. authentification Microsoft Entra ID API Express.js

  • 1.1. Enregistrer l’application dans Microsoft Entra ID

  • 1.2. Préparer votre projet Node.js

  • 1.3. Intégrer MSAL et configurer le middleware

  • 1.4. Protéger vos routes Express

  • 1.5. Erreurs fréquentes et résolution

  • 1.6. Bonnes pratiques performance et sécurité

  • 1.7. Conclusion

intégrer l’authentification Microsoft Entra ID dans une API express.js node.js

Image de intégrer l’authentification Microsoft Entra ID dans une API express.js node.js

authentification Microsoft Entra ID API Express.js

Dans ce tutoriel, nous allons sécuriser une API Node.js avec Express.js en utilisant Microsoft Entra ID (anciennement Azure AD). Vous apprendrez à enregistrer votre application dans Azure, intégrer la bibliothèque MSAL, protéger vos routes et gérer les erreurs fréquentes.

1. Enregistrer l’application dans Microsoft Entra ID

  1. Installez et connectez-vous à l’interface Azure CLI :
    az login
  2. Créez un nouvel enregistrement d’application :
    az ad app create \
      --display-name "MyExpressApi" \
      --identifier-uris "api://your-tenant-id/myexpressapi" \
      --reply-urls "https://localhost:3000/auth/callback"
  3. Notez l’appId et ajoutez un secret client :
    az ad app credential reset \
      --id YOUR_APP_ID \
      --credential-description "APISecret" \
      --years 1

2. Préparer votre projet Node.js

  1. Initialisez votre projet et installez les dépendances :
    npm init -y
    npm install express msal @azure/msal-node dotenv
  2. Créez un fichier .env :
    TENANT_ID=your-tenant-id
    CLIENT_ID=your-app-id
    CLIENT_SECRET=your-client-secret
    API_URI=api://your-tenant-id/myexpressapi

3. Intégrer MSAL et configurer le middleware

const express = require('express');
const { ConfidentialClientApplication } = require('@azure/msal-node');
require('dotenv').config();

const msalConfig = {
  auth: {
    clientId: process.env.CLIENT_ID,
    authority: `https://login.microsoftonline.com/${process.env.TENANT_ID}`,
    clientSecret: process.env.CLIENT_SECRET
  }
};
const cca = new ConfidentialClientApplication(msalConfig);
const app = express();

// Middleware de vérification du token
async function verifyToken(req, res, next) {
  const authHeader = req.headers.authorization || '';
  const token = authHeader.replace('Bearer ', '');

  try {
    const result = await cca.acquireTokenOnBehalfOf({
      oboAssertion: token,
      scopes: [`${process.env.API_URI}/.default`]
    });
    req.user = result.account;
    next();
  } catch (err) {
    console.error('Token validation error:', err);
    res.status(401).json({ error: 'Invalid token' });
  }
}

app.use(express.json());

4. Protéger vos routes Express

app.get('/api/secure-data', verifyToken, (req, res) => {
  res.json({ message: 'Données protégées', user: req.user.username });
});

app.listen(3000, () => {
  console.log('API sécurisée démarrée sur http://localhost:3000');
});

5. Erreurs fréquentes et résolution

  • InvalidAudience : vérifiez que API_URI dans Azure et votre .env correspondent exactement.
  • UnauthorizedClient : assurez-vous d’avoir bien attribué la permission « Access as user » dans la section API permissions de l’app Azure.
  • CORS : si vous consommez l’API depuis un navigateur, activez CORS dans Express ou configurez votre proxy.

6. Bonnes pratiques performance et sécurité

  • Cachez les tokens : évitez de redemander un jeton pour chaque requête, utilisez Node.js memory cache ou Redis.
  • Rotation des secrets : planifiez la mise à jour du client secret avant expiration (évitez les interruptions).
  • Logs et monitoring : intégrez un logger (p.ex. Winston) pour tracer les échecs d’authentification.
  • HTTPS obligatoire : déployez derrière Nginx ou un équivalent (Express.js même en prod doit utiliser TLS).

Conclusion

En quelques étapes, vous avez mis en place une authentification robuste avec Microsoft Entra ID pour votre API Express.js. Cette solution améliore la sécurité et s’intègre à l’écosystème Azure. Pour aller plus loin, explorez notre offre développement d’application web ou contactez-nous pour un accompagnement sur-mesure.

Besoin d’aide pour sécuriser vos API ? Contactez nos experts.

Image de Les 10 thèmes WordPress gratuits qui feront briller votre site vitrine en 2025

Les 10 thèmes WordPress gratuits qui feront briller votre site vitrine en 2025

Découvrez nos 10 thèmes WordPress gratuits pour créer un site vitrine pro, rapide et design en 2025, idéal pour freelances, startups et entrepreneurs.
Image de deno 2.0 : plongée technique dans le nouveau runtime JavaScript/TypeScript

deno 2.0 : plongée technique dans le nouveau runtime JavaScript/TypeScript

Plongez dans Deno 2.0 et découvrez comment ce runtime JavaScript/TypeScript augmente les performances, renforce la sécurité et simplifie bundling et HTTP/3
Image de comment piloter la conduite du changement pour réussir l’adoption d’un erp-crm en pme

comment piloter la conduite du changement pour réussir l’adoption d’un erp-crm en pme

Découvrez un guide pratique pour accompagner vos équipes, structurer la gouvernance et mesurer le ROI lors de l’implémentation d’un ERP-CRM en PME
DEVIS GRATUIT

Un projet en tête ? Vous avez des questions ?

Contactez nous pour recevoir un devis gratuitement, des réponses à vos questions ou une séance de consulting offerte avec l'un de nos experts :

Femme en chemise jaune