Keycloak est une solution open-source de gestion d’identités et d’accès (IAM) qui prend en charge OAuth2, OpenID Connect et SAML. Il permet de centraliser l’authentification, le Single Sign-On (SSO) et la gestion des utilisateurs pour vos applications.
Prérequis
- Docker et Docker Compose ou Kubernetes
- Java 11+ (si déploiement natif)
- Nom de domaine pointant vers le serveur Keycloak
- Ports 8080/8443 disponibles
Déploiement rapide avec Docker Compose
-
Créez
docker-compose.yml
:version: '3.8' services: keycloak: image: quay.io/keycloak/keycloak:21.0.3 environment: KEYCLOAK_ADMIN: admin KEYCLOAK_ADMIN_PASSWORD: admin command: start-dev ports: - '8080:8080'
-
Lancez Keycloak :
docker-compose up -d
-
Accédez à l’interface :
http://<HOST>:8080
Configuration d’un realm et client
- Connectez-vous en admin
- Créez un Realm (ex :
myrealm
) - Dans Clients, ajoutez un client public
- Client ID :
myapp
- Redirection URI :
https://myapp.example.com/*
- Client ID :
- Configurez les mappers pour inclure les rôles et attributs utilisateur
Intégration OAuth2 dans votre application
Exemple Node.js avec openid-client
const { Issuer } = require('openid-client');
(async () => {
const keycloak = await Issuer.discover('http://<HOST>:8080/realms/myrealm');
const client = new keycloak.Client({
client_id: 'myapp',
redirect_uris: ['https://myapp.example.com/callback'],
response_types: ['code'],
});
// Routes Express pour redirection et callback...
})();
Bonnes pratiques
- TLS obligatoire en production
- Sécuriser l’accès à l’admin console (IP whitelist, reverse proxy)
- Centraliser les logs (ELK, Loki)
- Backup de la base Keycloak (PostgreSQL, MySQL…)
- Monitoring (Prometheus exporter disponible)
Conclusion
Keycloak simplifie la mise en place d’un SSO sécurisé et centralisé pour vos applications, en offrant un support complet OAuth2, OIDC et SAML, ainsi qu’une interface d’administration riche.