• 1. implémenter l’authentification OAuth2 Keycloak dans une API Node.js Express

  • 1.1. prérequis

  • 2. déploiement de Keycloak en conteneur Docker

  • 2.1. configuration du realm et client OAuth2

  • 3. intégration dans votre API Node.js

  • 3.1. test de l’authentification

  • 4. bonnes pratiques sécurité et perf

  • 5. conclusion

implémenter l’authentification oauth2 keycloak dans une api node.js express

Image de implémenter l’authentification oauth2 keycloak dans une api node.js express

implémenter l’authentification OAuth2 Keycloak dans une API Node.js Express

Dans ce tutoriel, nous allons sécuriser une API REST Node.js (Express) en déployant Keycloak via Docker et en configurant OAuth2. À l’issue de ce guide, votre startup ou PME disposera d’un système d’authentification robuste, extensible et conforme aux bonnes pratiques de sécurité.

prérequis

  • Node.js ≥14 et Express.js
  • Docker ≥20 (voir Docker)
  • Client HTTP (Postman, cURL)
  • Clé API Keycloak ou accès admin

1. déploiement de Keycloak en conteneur Docker

  1. Créer un fichier docker-compose.yml :
version: '3.8'
services:
  keycloak:
    image: quay.io/keycloak/keycloak:21.1.1
    environment:
      KEYCLOAK_ADMIN: admin
      KEYCLOAK_ADMIN_PASSWORD: AdminPass123
    command: start-dev
    ports:
      - "8080:8080"

Commandes pour lancer :

docker-compose up -d
docker logs -f   # vérifier le démarrage en ~15s

configuration du realm et client OAuth2

  1. Se connecter à l’interface admin : http://localhost:8080 (admin/AdminPass123).
  2. Créer un realm (ex. my-app).
  3. Ajouter un client
    • Client ID : node-api
    • Accès public : désactivé
    • Credentials : noter le secret
    • Valid Redirect URIs : http://localhost:3000/*

2. intégration dans votre API Node.js

Installer la dépendance keycloak-connect :

npm install keycloak-connect express-session

Exemple minimal :

const express = require('express');
const session = require('express-session');
const Keycloak = require('keycloak-connect');

const app = express();
app.use(session({ secret: 'session-secret', resave: false, saveUninitialized: true }));

const keycloak = new Keycloak({ store: new session.MemoryStore() }, {
  clientId: 'node-api',
  bearerOnly: true,
  serverUrl: 'http://localhost:8080',
  realm: 'my-app',
  credentials: { secret: 'VOTRE_SECRET_ICI' }
});

app.use(keycloak.middleware());

app.get('/api/public', (req, res) => {
  res.json({ msg: 'accès public' });
});

app.get('/api/private', keycloak.protect(), (req, res) => {
  res.json({ msg: 'accès restreint, utilisateur ' + req.kauth.grant.access_token.content.preferred_username });
});

app.listen(3000, () => console.log('API démarrée sur port 3000'));

test de l’authentification

  1. Récupérer un access token via cURL :
curl -X POST 'http://localhost:8080/realms/my-app/protocol/openid-connect/token' \
 -d 'grant_type=password&client_id=node-api' \
 -d 'username=admin&password=AdminPass123' \
 -d 'client_secret=VOTRE_SECRET_ICI'

Ensuite, appeler l’endpoint protégé :

curl http://localhost:3000/api/private \
 -H 'Authorization: Bearer VOTRE_ACCESS_TOKEN'

3. bonnes pratiques sécurité et perf

  • Limiter le CORS au domaine de votre front-end.
  • Renouveler les secrets tous les 90 jours (automatiser via cron ou Vault).
  • Activer HTTPS en frontal (Nginx, service d’application web Novane).
  • Mesurer le temps de validation du token : viser <50 ms (profilage Node.js).
  • Surveiller les erreurs avec un outil APM (Sentry, Datadog).

conclusion

En quelques étapes, vous avez mis en place une authentification OAuth2 Keycloak pour votre API Node.js Express, garantissant sécurité, évolutivité et conformité. Cette solution s’intègre facilement dans une architecture microservices ou monolithe et s’adapte à vos besoins en termes de gestion des utilisateurs.

Pour aller plus loin ou intégrer cette configuration dans un projet existant, contactez nos experts ou découvrez nos réalisations Node.js.

Besoin d’un accompagnement complet ? N’hésitez pas à demander un devis.

Image de top 10 des extensions chrome pour booster votre productivité et sécurité en 2025

top 10 des extensions chrome pour booster votre productivité et sécurité en 2025

Découvrez les 10 extensions Chrome incontournables pour 2025 et gagnez du temps, sécurisez vos données et boostez votre productivité au quotidien
Image de einstein gpt de salesforce : comment l’ia booste votre crm et vos ventes

einstein gpt de salesforce : comment l’ia booste votre crm et vos ventes

Découvrez comment Einstein GPT de Salesforce intègre l’IA générative dans votre CRM pour automatiser ventes, support et marketing et gagner du temps
Image de comment un logiciel de gestion de projet collaboratif cloud booste la productivité en pme

comment un logiciel de gestion de projet collaboratif cloud booste la productivité en pme

Découvrez comment un logiciel de gestion de projet collaboratif cloud aide votre PME à centraliser l’info, gagner en agilité et booster la productivité
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 :

Nous contacter