• 1. préparer l’environnement keycloak

  • 1.1. créer un realm et un client

  • 2. développer l’api rest node.js

  • 2.1. structure du code

  • 2.2. configuration keycloak.json

  • 2.3. code du serveur (index.js)

  • 3. tester et obtenir un token

  • 4. bonnes pratiques et métriques

  • 5. conclusion

sécuriser une api rest node.js avec oauth2 et keycloak : guide complet

Image de sécuriser une api rest node.js avec oauth2 et keycloak : guide complet

Dans ce tutoriel, nous allons mettre en place une protection OAuth2 pour une API REST Node.js grâce à Keycloak. Vous apprendrez à installer Keycloak en conteneur Docker, configurer un realm, un client et intégrer la librairie keycloak-connect dans une application Express. À la clé : une sécurisation robuste, centralisée et évolutive de vos microservices.

1. préparer l’environnement keycloak

Nous partons d’une machine avec Docker installé (détails sur Docker).

  1. Créer un docker network :
    docker network create keycloak-net
  2. Démarrer Keycloak en mode standalone :
    docker run -d --name keycloak \
      --network keycloak-net \
      -p 8080:8080 \
      -e KEYCLOAK_ADMIN=admin \
      -e KEYCLOAK_ADMIN_PASSWORD=admin \
      quay.io/keycloak/keycloak:22.0.1 \
      start-dev
  3. Accéder à la console : ouvrez http://localhost:8080 et connectez-vous en admin/admin.

1.1. créer un realm et un client

  1. Dans la console Keycloak, ajouter un nouveau Realm nommé novane-realm.
  2. Dans ce realm, créer un Client :
    • Client ID : api-server
    • Root URL : http://localhost:3000
    • Access Type : confidential (pour OAuth2)
    • Valid Redirect URIs : *
  3. Noter le Secret généré, nous en aurons besoin dans notre application Node.js.

2. développer l’api rest node.js

Nous allons créer un serveur Express simple (docs Node.js) et intégrer keycloak-connect.

npm init -y
npm install express keycloak-connect session-file-store

2.1. structure du code

.
├── index.js
└── keycloak.json

2.2. configuration keycloak.json

{
  "realm": "novane-realm",
  "auth-server-url": "http://localhost:8080",
  "ssl-required": "external",
  "resource": "api-server",
  "credentials": {
    "secret": "VOTRE_SECRET_ICI"
  },
  "confidential-port": 0
}

2.3. code du serveur (index.js)

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

const app = express();
const memoryStore = new session.MemoryStore();

app.use(session({
  secret: 'unSecretFort',
  resave: false,
  saveUninitialized: true,
  store: memoryStore
}));

const keycloak = new Keycloak({ store: memoryStore });

app.use(keycloak.middleware());

app.get('/public', (req, res) => {
  res.send('Accès public');
});

app.get('/protected', keycloak.protect(), (req, res) => {
  res.send('Ressource protégée pour ' + req.kauth.grant.access_token.content.preferred_username);
});

const PORT = 3000;
app.listen(PORT, () => {
  console.log(`API démarrée sur http://localhost:${PORT}`);
});

3. tester et obtenir un token

Utilisez curl pour récupérer un token OAuth2 et appeler l’endpoint protégé :

# Récupération du token
curl -X POST "http://localhost:8080/realms/novane-realm/protocol/openid-connect/token" \
  -d "client_id=api-server" \
  -d "grant_type=client_credentials" \
  -d "client_secret=VOTRE_SECRET_ICI"

# Supposons que vous recevez access_token=XYZ
curl -H "Authorization: Bearer XYZ" http://localhost:3000/protected
Erreur fréquente : « invalid_client » signifie souvent un mauvais secret ou un client non-confidential configuré en public. Vérifiez keycloak.json.

4. bonnes pratiques et métriques

  • Renouveler régulièrement les secrets (par ex. tous les 90 jours).
  • Activer la rotation des tokens dans Keycloak pour limiter l'impact d’un vol de token.
  • Mesurer le temps de réponse : selon OWASP 2025, la latence d’authentification doit rester <10 ms en moyenne.
  • Surveiller les logs Keycloak et Express pour détecter les 401 ou 403.

5. conclusion

Vous avez maintenant une API REST Node.js protégée par OAuth2 via Keycloak, facile à maintenir et à faire évoluer. Pour aller plus loin, explorez l’intégration d’un Identity Broker ou la gestion des rôles dynamiques.

Envie d’un accompagnement sur-mesure pour vos projets SaaS ou ERP/CRM ? Découvrez nos services d’intégration IA et développement d’applications web.

Besoin de conseil ? Contactez-nous pour une séance offerte.

Image de Abonnement IPTV 2026 : Faire le Meilleur Choix pour Votre Foyer

Abonnement IPTV 2026 : Faire le Meilleur Choix pour Votre Foyer

Guide complet pour choisir un abonnement IPTV en 2026 : comparatif des offres, critères de sélection et conseils d'experts pour profiter du meilleur streaming.
Image de figma en 2025 : nouveautés, astuces et retours d’expérience

figma en 2025 : nouveautés, astuces et retours d’expérience

Découvrez les dernières fonctionnalités IA de Figma 2025, astuces productivité et retours d’expérience pour booster vos designs du wireframe au prototype.
Image de slack ai : la collaboration augmentée par l'intelligence artificielle en entreprise

slack ai : la collaboration augmentée par l'intelligence artificielle en entreprise

Découvrez comment Slack AI synthétise vos échanges, propose des réponses et facilite la recherche pour gagner du temps et fluidifier la collaboration.
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