guide technique : implémenter l’authentification oauth2 avec keycloak pour votre saas node.js
07/07/2025
Introduction
Dans un contexte SaaS, sécuriser l’accès à votre application est incontournable. OAuth2, associé à Keycloak (solution open-source de gestion d’identité & d’accès), offre un flux d’authentification robuste et standardisé. Ce guide s’adresse aux lead devs et ingénieurs DevOps souhaitant intégrer Keycloak à une application Node.js conteneurisée avec Docker.
Étapes d’implémentation
1. Déployer Keycloak en Docker
Lancez rapidement un conteneur Keycloak :
docker run -d \
--name keycloak \
-p 8080:8080 \
-e KEYCLOAK_USER=admin \
-e KEYCLOAK_PASSWORD=ChangeMe123 \
jboss/keycloak:20.0.1
– Vous pouvez vérifier le statut :
docker ps | grep keycloak
2. Créer un Realm et un Client OAuth2
Dans l’interface Keycloak (http://localhost:8080), connectez-vous en admin, puis :
- Créez un Realm (« saas-realm »).
- Ajoutez un Client (« saas-client ») de type public ou confidential selon votre besoin.
- Dans l’onglet Credentials, récupérez le
Client secret
si confidential. - Configurez Valid Redirect URIs (ex.
http://localhost:3000/*
).
3. Intégrer Keycloak dans l’application Node.js
Dans votre projet :
npm install keycloak-connect express-session
Exemple de serveur Express :
const express = require('express');
const session = require('express-session');
const Keycloak = require('keycloak-connect');
const app = express();
app.use(session({ secret: 'change_me', resave: false, saveUninitialized: true }));
// Initialisation de Keycloak
const keycloak = new Keycloak({ store: session() }, {
clientId: 'saas-client',
bearerOnly: true,
serverUrl: 'http://localhost:8080',
realm: 'saas-realm',
credentials: { secret: 'VOTRE_CLIENT_SECRET' }
});
// Protection des routes
app.use(keycloak.middleware());
app.get('/public', (req, res) => res.send('Accessible sans auth'));
app.get('/secure', keycloak.protect(), (req, res) => {
res.send('Contenu sécurisé, Hello ' + req.kauth.grant.access_token.content.preferred_username);
});
app.listen(3000, () => console.log('API démarrée sur port 3000'));
4. Tester le flux OAuth2
Accédez à http://localhost:3000/secure
. Vous serez redirigé vers Keycloak pour vous authentifier, puis renvoyé sur votre app avec un access_token JWT.
Lisez notre offre SaaS pour un accompagnement complet à la mise en production.
Bonnes pratiques
- HTTPS obligatoire pour protéger tokens et credentials.
- Stockez les
Client secret
dans un vault (HashiCorp Vault, AWS Secrets Manager). - Activez Refresh Tokens et gérez leur rotation.
- Limitez les scopes aux seules informations nécessaires.
- Supervisez l’authentification via des métriques (Jenkins ou Prometheus).
Conclusion
En quelques commandes et fichiers de config, OAuth2 + Keycloak vous apportent une couche d’authentification et d’autorisation standardisée, évolutive pour un SaaS sécurisé et maintenable. Pour aller plus loin, pensez à déployer Keycloak en cluster ou intégrer un provider externe (LDAP, social login).
Envie d’un audit sécurité ou d’un accompagnement sur mesure ? Contactez-nous.