IAM & Identité

Keycloak : c'est quoi et à quoi ça sert en 2026 ?

Keycloak en 2026 : architecture (realms, clients, flows), OIDC/SAML/OAuth2, alternatives Authentik/Auth0, déploiement Kubernetes, hardening, FAPI, FIDO2.

Naim Aouaichia
14 min de lecture
  • Keycloak
  • IAM
  • SSO
  • OIDC
  • SAML
  • OAuth 2.0
  • Identity Provider
  • Open Source

Keycloak est un Identity Provider (IdP) open source publié sous licence Apache 2.0, qui implémente les standards d'authentification et d'autorisation modernes (OpenID Connect 1.0, OAuth 2.0, SAML 2.0, SCIM 2.0, FAPI 2.0, FIDO2/WebAuthn). Il fournit single sign-on (SSO) entre applications, gestion centralisée des utilisateurs et rôles, fédération d'identités vers des providers externes (Google, GitHub, LDAP/AD, autres SAML/OIDC), authentification multi-facteurs (TOTP, WebAuthn, passkeys), et plus de 1 000 fonctionnalités IAM. Initialement créé par Red Hat en 2014, devenu projet CNCF Sandbox en 2023, distribué en versions communautaire (Keycloak) et commerciale supportée (Red Hat build of Keycloak, ex Red Hat SSO). En 2026, Keycloak est l'IdP open source le plus déployé en entreprise, alternative dominante à Auth0, Okta Workforce, Azure Entra ID dans les organisations qui veulent self-hoster pour des raisons de coût (gratuit), souveraineté (données restent on-premise), ou exigences réglementaires. Cet article détaille l'architecture conceptuelle (realms, clients, users, roles, authentication flows), les standards supportés, les cas d'usage workforce et customer IAM, les options de déploiement Kubernetes et bare metal, la comparaison avec les alternatives (Authentik, Auth0, Okta, Azure Entra ID, Ory Hydra, FusionAuth), le hardening sécurité et les pièges courants.

Origines et positionnement

Keycloak est né en 2014 chez Red Hat sous l'impulsion de Bill Burke, comme refonte du projet PicketLink. Premier release stable 1.0 en septembre 2014. Adoption rapide grâce à trois caractéristiques : open source intégral, support des standards modernes dès le départ (SAML 2.0 et OIDC), expérience admin web complète sans configuration XML.

Évolution majeure en avril 2022 avec Keycloak 17.0 : migration de l'application server WildFly (Java EE) vers Quarkus (framework Kubernetes-native). Démarrage 5 à 10 fois plus rapide, footprint mémoire réduit de 60 %, meilleure intégration native containers.

Mai 2023 : Keycloak rejoint la CNCF (Cloud Native Computing Foundation) comme Sandbox project. Cela renforce son indépendance vis-à-vis de Red Hat (acquis par IBM en 2019) et son adoption cloud-native.

En 2026, Keycloak est mature : version stable 26.x, plus de 25 000 stars GitHub, déployé par des dizaines de milliers d'organisations dans le monde dont plusieurs CAC 40 français, banques européennes, ministères français (services publics français Internet utilisent Keycloak comme IdP central pour FranceConnect-like internal).

Architecture conceptuelle

Keycloak organise les identités et accès via 7 concepts principaux à comprendre avant tout déploiement.

Realms

Un realm est un espace d'isolation logique dans Keycloak. Chaque realm a ses propres utilisateurs, clients, rôles, authentication flows, identity providers fédérés. Les realms ne se voient pas entre eux.

Pattern type :

  • master realm : réservé exclusivement à l'administration de Keycloak lui-même. Les admins Keycloak vivent ici. Jamais d'application business dans le master.
  • production realm (par exemple acme-prod) : utilisateurs et applications de production.
  • staging realm (acme-staging) : environnement de test isolé.
  • partners realm : si fédération B2B avec partenaires externes.

Une organisation moyenne maintient typiquement 2 à 5 realms.

Clients

Un client représente une application qui s'authentifie via Keycloak. Configuration par client :

  • Client ID : identifiant unique (par exemple web-frontend, mobile-app, backend-api).
  • Access Type : confidential (avec secret, pour backend), public (sans secret, pour SPA et mobile), bearer-only (resource server qui valide tokens uniquement).
  • Authentication Flow : Authorization Code (web), Authorization Code + PKCE (SPA, mobile), Client Credentials (machine-to-machine), Implicit (déprécié), Direct Access Grants (déprécié).
  • Redirect URIs : URLs autorisées pour callback OAuth (CRUCIAL pour sécurité).
  • Web Origins : pour CORS.
  • Roles : rôles spécifiques au client.

Users

Identités utilisateurs gérées dans le realm. Attributs : username, email, first/last name, attributs custom. Peuvent être créés manuellement, importés via SCIM, fédérés depuis LDAP/AD, ou importés depuis identity providers externes (Google, GitHub).

Roles et Groups

  • Realm roles : rôles globaux au realm (par exemple admin, user).
  • Client roles : rôles spécifiques à un client (par exemple frontend.viewer, frontend.editor).
  • Groups : ensembles d'utilisateurs avec rôles attribués collectivement.
  • Composite roles : rôles composés d'autres rôles (héritage).

Identity Providers

Keycloak peut fédérer l'authentification vers des providers externes : Google, GitHub, Microsoft, Apple ID (OIDC), partenaires externes via SAML, Active Directory et LDAP via federation. L'utilisateur s'authentifie chez le provider externe, Keycloak crée ou matche l'identité locale.

Authentication Flows

Les flows définissent les étapes de l'authentification : username/password, MFA, conditions, captcha, etc. Configurables visuellement dans l'admin console. Peuvent être customisés par client ou par realm.

Exemple flow type 2026 :

1. Cookie (vérifie session existante) — bypass si déjà loggé
2. Identity Provider Redirector (option SSO externe)
3. Username / Password / Passkey (alternatives possibles)
4. Conditional MFA (si profil utilisateur l'exige)
   ├── Conditional WebAuthn (si passkey enregistrée)
   └── OTP Form (TOTP fallback)
5. Required Actions (changement password, configuration MFA)

Sessions

Keycloak gère les sessions utilisateur côté serveur (caches Infinispan distribué) et émet des tokens (access token JWT, refresh token, ID token OIDC) pour les clients. Configuration des durées par realm.

Standards supportés

Keycloak implémente l'écosystème standard IAM en 2026.

StandardVersionUsage
OAuth 2.0 (RFC 6749)CompletAutorisation, framework de base
OAuth 2.0 PKCE (RFC 7636)CompletProtection clients publics (SPA, mobile)
OpenID Connect 1.0CompletAuthentification fédérée moderne
SAML 2.0CompletFédération enterprise legacy et nouvelle
SCIM 2.0Complet via pluginProvisioning utilisateurs cross-systèmes
FAPI 2.0Conformant 2024Sécurité financière (open banking, PSD2)
FIDO2 / WebAuthnComplet depuis 25.0 (mai 2024)Passkeys, security keys
TOTP (RFC 6238)CompletMFA classique via Google Authenticator etc.
LDAP / KerberosCompletFederation avec AD existant

Cas d'usage par standard

  • OIDC : SSO moderne pour applications web (frontend → backend), mobile, SPA. Standard recommandé pour tout nouveau projet 2026.
  • SAML 2.0 : intégration applications enterprise legacy (SAP, Salesforce, applications internes anciennes), fédération B2B traditionnelle.
  • OAuth 2.0 Client Credentials : authentification machine-to-machine entre microservices.
  • SCIM 2.0 : synchronisation utilisateurs entre Keycloak et applications (création, modification, suppression utilisateurs propagées automatiquement).
  • FIDO2 : remplacement des mots de passe par passkeys, MFA fort résistant phishing.

Cas d'usage typiques 2026

Quatre catégories d'usage couvrent la majorité des déploiements.

Workforce SSO

Authentification des collaborateurs internes pour les applications de l'entreprise (intranet, outils SaaS, applications métier). Keycloak en frontage des applications, fédération vers Active Directory ou Entra ID pour ne pas dupliquer les comptes.

Avantages vs Okta Workforce : coût (gratuit), souveraineté (données on-prem ou cloud privé), customisation poussée.

Customer IAM (CIAM)

Authentification des clients finaux pour les services en ligne (web, mobile). Keycloak gère l'inscription, login, reset password, MFA, fédération réseaux sociaux.

Avantages vs Auth0 : pas de coût par utilisateur actif (Auth0 facture par MAU), contrôle complet de l'expérience UX via theming.

Limites : nécessite du tooling DevOps interne pour gérer l'infrastructure à grande échelle (millions d'utilisateurs).

Machine-to-machine et microservices

Authentification entre services internes via OAuth 2.0 Client Credentials grant. Chaque service a son client Keycloak, obtient des access tokens JWT que les autres services valident.

Pattern moderne : intégration avec service mesh (Istio, Linkerd) qui valide les JWT au niveau sidecar plutôt que dans le code applicatif.

Fédération B2B

Permettre à des partenaires externes (clients, fournisseurs) d'accéder à des applications avec leur propre identité (chez eux). Keycloak agit comme service provider qui fédère vers les IdPs externes des partenaires (SAML 2.0 ou OIDC).

Architecture de déploiement

Trois options selon contexte 2026.

Kubernetes via Keycloak Operator

Recommandé pour 80 % des nouveaux déploiements. L'Operator officiel (CNCF, depuis 2022) gère le cycle de vie complet.

# Déploiement Keycloak via Operator
apiVersion: k8s.keycloak.org/v2alpha1
kind: Keycloak
metadata:
  name: keycloak-prod
  namespace: keycloak
spec:
  instances: 3
  image: quay.io/keycloak/keycloak:26.0.7
  db:
    vendor: postgres
    host: postgres-keycloak
    database: keycloak
    usernameSecret:
      name: keycloak-db-credentials
      key: username
    passwordSecret:
      name: keycloak-db-credentials
      key: password
  hostname:
    hostname: auth.example.test
  http:
    tlsSecret: keycloak-tls
  proxy:
    headers: xforwarded
  resources:
    limits:
      memory: "2Gi"
      cpu: "2"
    requests:
      memory: "1Gi"
      cpu: "500m"

Configurations supplémentaires recommandées en production :

  • Base PostgreSQL externe : jamais H2 embarqué (par défaut, dev uniquement). PostgreSQL 14+ recommandé.
  • 3 replicas minimum pour haute disponibilité.
  • Sessions partagées via Infinispan (par défaut dans le cluster Keycloak).
  • Reverse proxy (Ingress NGINX, Traefik, Istio) avec TLS et headers X-Forwarded-* configurés.
  • Backups automatiques de la base PostgreSQL (objet de l'opérationnel critique).

JAR standalone Quarkus

Pour VMs ou bare metal sans Kubernetes. Distribution depuis Keycloak 17.0.

# Téléchargement et démarrage
wget https://github.com/keycloak/keycloak/releases/download/26.0.7/keycloak-26.0.7.tar.gz
tar -xzf keycloak-26.0.7.tar.gz
cd keycloak-26.0.7
 
# Build initial avec configuration
bin/kc.sh build --db=postgres --features=passkeys
 
# Configuration via env vars
export KC_DB_URL=jdbc:postgresql://postgres:5432/keycloak
export KC_DB_USERNAME=keycloak
export KC_DB_PASSWORD=<secret>
export KC_HOSTNAME=auth.example.test
export KC_PROXY=edge
 
# Démarrage production
bin/kc.sh start

OpenShift

Pour les clients Red Hat OpenShift, Operator natif (Red Hat build of Keycloak Operator) avec intégration native OpenShift Routes, Secrets, monitoring Prometheus.

Hardening Keycloak en production

Sept contrôles cumulatifs à appliquer pour tout déploiement production.

1. Isoler le master realm

Créer un realm dédié (production, app-1, etc.) pour toute application business. Ne jamais utiliser le master realm pour autre chose que l'administration Keycloak elle-même.

2. Restreindre l'admin console

L'admin console (/admin/) ne doit jamais être exposée à Internet sans contrôles supplémentaires :

# nginx : restriction admin console par IP
location /admin/ {
    allow 10.0.0.0/8;       # IPs internes
    allow 203.0.113.0/24;   # bastion VPN
    deny all;
    proxy_pass http://keycloak;
}
 
# Le reste (login users, OIDC endpoints) accessible publiquement
location / {
    proxy_pass http://keycloak;
}

Alternative : déploiement de deux instances Keycloak séparées (frontend public, admin private).

3. Configurer Client redirect URIs strictement

Ne jamais utiliser de wildcard * ou de pattern trop large dans les Valid Redirect URIs.

# Mauvais (vulnérable à OAuth code interception)
Valid Redirect URIs:
- *
- https://*.example.test/*
 
# Bon
Valid Redirect URIs:
- https://app.example.test/auth/callback
- https://app.example.test/silent-renew

4. Activer PKCE pour clients publics

Pour SPA et mobile (clients publics sans secret), activer PKCE obligatoire (Authorization Code + PKCE flow uniquement). Évite l'attaque OAuth code interception.

5. Désactiver les flows dépréciés

Désactiver Implicit Flow et Direct Access Grants (Resource Owner Password Credentials) au niveau de chaque client. Ces flows sont dépréciés par OAuth 2.1 (draft) et OWASP API Security Top 10.

6. Hardening Authentication Flows

  • MFA obligatoire pour les comptes admin du realm.
  • MFA conditionnel pour les utilisateurs (basé sur risk score si plugin disponible).
  • Brute force detection activé (par défaut depuis 17.0).
  • CAPTCHA sur registration et reset password si exposé Internet.

7. Patch management trimestriel

Keycloak a eu plusieurs CVE notables 2023-2024 :

  • CVE-2023-0264 (CVSS 6.5) : information disclosure via SAML.
  • CVE-2023-6927 (CVSS 6.4) : path traversal.
  • CVE-2024-1132 (CVSS 8.1) : path traversal critique.
  • CVE-2024-1722 (CVSS 8.1) : DoS via authentication brute force.

Suivre les Keycloak security advisories (keycloak.org/security) et patcher dans les 30 jours pour CVE haute, sous 7 jours pour critique.

Comparaison avec alternatives

L'écosystème IAM en 2026 inclut plusieurs alternatives selon contexte.

SolutionTypeForceLimiteCoût indicatif
KeycloakOpen source self-hostedStandards complets, gratuit, matureComplexité ops, courbe d'apprentissageGratuit + ops
AuthentikOpen source self-hostedUX moderne, config-as-codeMoins mature, perf à très grande échelleGratuit + ops
FusionAuthOpen source community + commercialFacile, single-tenantLimité multi-tenancy en gratuitFree 10K users + payant
Auth0SaaS commercialDémarrage rapide, UX, écosystèmeCoût élevé MAU, vendor lock-in$0.023 par MAU au-delà de 10K
Okta WorkforceSaaS commercialRéférence enterprise, écosystème énormeCher, focus large entreprise$2-15 par user/mois
Azure Entra IDSaaS MicrosoftIntégration Microsoft 365, AD legacyLock-in Microsoft, complexité licensingInclus M365 ou $6/user
Ory Hydra + KratosOpen source self-hostedHeadless API-first, Go performancePas d'admin UI, dev-friendly onlyGratuit + ops
ForgeRockCommercial enterpriseTrès mature, scale extrêmeCoût élevé, complexitéSur devis, gros budgets

Quand choisir Keycloak

  • Volume utilisateurs significatif (5 000+ MAU) où Auth0/Okta deviennent coûteux.
  • Compétence DevOps interne disponible pour opérer self-hosted.
  • Souveraineté ou compliance exige données on-premise ou cloud privé.
  • Besoin de standards complets (FAPI 2.0 pour banking).
  • Besoin de customisation poussée (theming, plugins).

Quand préférer alternative

  • Volume faible (moins de 5K MAU) + démarrage rapide : Auth0 ou FusionAuth Community.
  • Écosystème Microsoft déjà déployé : Azure Entra ID natif.
  • Architecture moderne API-first sans admin UI : Ory.
  • Très grande scale enterprise (millions+) avec budget : ForgeRock ou Auth0 Enterprise.

Limites et pièges

Quatre limitations à connaître avant adoption.

Complexité opérationnelle

Keycloak en production nécessite :

  • HA cluster (3+ replicas, base PostgreSQL HA, sessions Infinispan).
  • Backups réguliers et testés.
  • Patch management trimestriel.
  • Monitoring (Prometheus, alerting sur availability).
  • Expertise interne pour debugger configurations Authentication Flows complexes.

Coût opérationnel typique : 0,3 à 0,5 ETP DevOps pour un déploiement de moins de 100K utilisateurs, 1 ETP et plus pour plus de 1M utilisateurs.

Migrations majeures

Migrer entre versions majeures peut être complexe :

  • Migration WildFly → Quarkus (16.x → 17.x) : changement complet de mécanisme de configuration. Beaucoup de scripts à réécrire.
  • Migration JSON storage → DB schema : modifications de schema PostgreSQL requises.

Toujours tester en environnement non-prod avant migration prod.

Performance à très grande échelle

Au-delà de 10 millions d'utilisateurs, Keycloak peut nécessiter optimisations spécifiques (cache tuning, base sharding). Auth0 et Okta sont mieux outillés pour ce scale extrême par construction SaaS.

UX admin moins moderne que concurrents

L'admin console Keycloak, bien que fonctionnelle, est moins polished que celles d'Okta ou Auth0. Pour des organisations qui valorisent l'UX admin pour des non-techniques, c'est un frein.

Points clés à retenir

  • Keycloak est l'Identity Provider open source de référence en 2026, sous Apache 2.0, projet CNCF Sandbox depuis 2023, distribué en versions communautaire et commerciale (Red Hat build of Keycloak).
  • Architecture conceptuelle : realms (isolation), clients (applications), users, roles/groups, identity providers fédérés, authentication flows, sessions. Master realm dédié à l'admin Keycloak uniquement.
  • Standards complets supportés : OIDC 1.0, OAuth 2.0 + PKCE, SAML 2.0, SCIM 2.0, FAPI 2.0, FIDO2/WebAuthn, TOTP. Permet workforce SSO, customer IAM, machine-to-machine, fédération B2B.
  • Déploiement recommandé 2026 : Kubernetes via Keycloak Operator officiel, base PostgreSQL externe, 3+ replicas, reverse proxy avec TLS et headers X-Forwarded.
  • Hardening obligatoire : isoler master realm, restreindre admin console, redirect URIs strictes, PKCE pour clients publics, désactiver flows dépréciés (Implicit, Direct Access Grants), patch management trimestriel.

Pour aller plus loin

Questions fréquentes

  • Keycloak est-il vraiment gratuit ?
    Oui, Keycloak est intégralement gratuit et open source sous licence Apache 2.0, sans limitation de nombre d'utilisateurs ni de fonctionnalités. C'est l'une des principales différenciations face aux solutions commerciales (Auth0 facturé par utilisateur actif mensuel, Okta par licence). Le coût réel de Keycloak est opérationnel : déploiement self-hosted (infrastructure, HA, backup), maintenance (patchs, upgrades), expertise interne. Pour une organisation avec 100 000+ utilisateurs et compétence DevOps disponible, le TCO Keycloak est typiquement 60 à 80 % inférieur à Auth0 ou Okta sur 3 ans. Pour moins de 5 000 utilisateurs sans compétence interne, les solutions managées restent compétitives.
  • Quelle différence entre Keycloak et Red Hat SSO ?
    Keycloak est le projet upstream open source. Red Hat SSO (renommé Red Hat build of Keycloak en 2024) est la version commerciale supportée par Red Hat avec SLA, patches backportés, support entreprise. Techniquement très proches, l'écart se mesure en versions (Red Hat SSO suit avec quelques mois de retard) et en stabilité (versions LTS Red Hat). En 2024, Keycloak est devenu projet CNCF Sandbox, ce qui renforce son indépendance vis-à-vis de Red Hat. Choix : Keycloak upstream pour flexibilité maximale et nouvelles features rapidement, Red Hat build for support commercial et stabilité long terme.
  • Keycloak supporte-t-il les passkeys et FIDO2 ?
    Oui, depuis Keycloak 25.0 (mai 2024) avec support natif WebAuthn et passkeys. La configuration passe par les Authentication Flows : ajouter une étape WebAuthn dans le flow login, optionnelle ou obligatoire. Keycloak gère les passkeys discoverable (utilisable sans username) et non-discoverable (avec username). Limites en 2026 : la gestion multi-passkeys par utilisateur reste basique (pas de naming custom des credentials sans plugin), et l'expérience d'enrollment peut nécessiter du theming custom pour matcher l'UX d'un Okta ou Auth0. Plusieurs plugins communautaires complètent les manques.
  • Keycloak ou Authentik en 2026 ?
    Keycloak reste le standard pour les organisations qui ont besoin de standards complets (FAPI 2.0, SAML 2.0 enterprise-grade, multi-tenancy via realms). Architecture mature, Java/Quarkus, écosystème vaste. Authentik (open source, Python/Django) gagne en popularité depuis 2022 pour les déploiements modernes : interface admin nettement plus moderne, configuration as code via YAML/Blueprints, intégration native applications populaires. Limites Authentik : maturité moindre sur SAML enterprise, performance moindre à très grande échelle (10M+ utilisateurs). Pour banking/finance/santé : Keycloak. Pour SaaS scale-up moderne et internal IT : Authentik souvent préféré.
  • Comment déployer Keycloak en production ?
    Trois patterns. 1) Containers Kubernetes : Keycloak Operator officiel (depuis Kubernetes 1.21+), gère StatefulSet, secrets, TLS, ingress. Recommandé en 2026 pour la majorité des nouveaux déploiements. 2) JAR standalone Quarkus : depuis Keycloak 17.0 (avril 2022), distribution Quarkus remplace WildFly. Plus léger, démarrage rapide, idéal pour VMs ou bare metal. 3) OpenShift : pour les clients Red Hat, Operator OpenShift natif. Configuration HA obligatoire en prod : 3+ replicas, base PostgreSQL externe (jamais H2 embarqué prod), session externe via Infinispan, reverse proxy avec TLS. Ne jamais exposer Keycloak admin console sur Internet.
  • Quels sont les risques de sécurité spécifiques à Keycloak ?
    Cinq risques principaux. 1) Mauvaise configuration des Client redirect URIs (wildcard, IP, localhost en prod) qui ouvre des attaques OAuth code interception. 2) Authentication Flows non hardcodés (modification flow login non auditée = bypass possible). 3) Admin console exposée à Internet sans IP allowlist. 4) Master realm utilisé pour les applications business (à isoler strictement, le master réalm gère uniquement les admins Keycloak). 5) CVE non patchées : Keycloak a eu plusieurs CVE significatives (CVE-2023-6927 path traversal, CVE-2024-1132 path traversal, CVE-2023-0264 information disclosure). Patch management trimestriel obligatoire. Audit annuel par pentester spécialisé IAM recommandé.

Écrit par

Naim Aouaichia

Expert cybersécurité et fondateur de Zeroday Cyber Academy

Expert cybersécurité avec un master spécialisé et un parcours hybride : développement, DevOps, DevSecOps, SOC, GRC. Fondateur de Hash24Security et Zeroday Cyber Academy. Formateur et créateur de contenu technique sur la cybersécurité appliquée, la sécurité des LLM et le DevSecOps.