# Architecture d'identité et SSO > **Décision arrêtée (2026-07-02).** Modèle **A** : OpenLDAP source de vérité, > Keycloak fédéré pour le SSO web, mail en bind LDAP direct. ## Principe : deux couches, pas deux choix - **OpenLDAP = l'annuaire** — *source de vérité* des identités (users, groups, `mail`, mot de passe). Standard, portable, compris par tout (mail, système, apps). **On crée et gère les identités ici.** - **Keycloak = le cerveau SSO** — OIDC/OAuth2/SAML : authentification unique des apps web, jetons, **MFA**, self-service, politiques. **Fédéré à OpenLDAP** (il lit l'annuaire, il ne le remplace pas). ``` OpenLDAP (source de vérité) ▲ ▲ (fédération)│ │ (bind direct) Keycloak Dovecot / Postfix (SSO · OIDC · MFA) (IMAP/SMTP auth) ▲ (redirection OIDC) ┌───────────┼────────────┐ Forgejo Grafana Nextcloud … ← apps web = SSO ``` ## Chemin d'auth par type de service | Type de service | Auth | Pourquoi | |---|---|---| | **Apps web** (Forgejo, Grafana, Nextcloud…) | **Keycloak OIDC** (SSO) | un seul login, MFA, jetons | | **Mail** (Dovecot, Postfix) | **LDAP direct** (bind) | IMAP/SMTP ne parlent pas OIDC ; username + mot de passe | | **Système / services** (SSSD, etc.) | **LDAP direct** | annuaire standard | | Tout | → **même OpenLDAP** | identité unifiée, aucun compte en double | ## Sens de provisionnement Les identités se créent et se gèrent dans **OpenLDAP**. Keycloak **fédère** (lit LDAP en lecture ; écriture optionnelle pour le self-service). Aucune identité n'est « maître » dans Keycloak : c'est LDAP la référence. Le mail bind directement sur LDAP. ## Pourquoi ce modèle (et pas Keycloak-source) - **Mail-compatible** : Dovecot/Postfix s'authentifient nativement contre LDAP ; contre Keycloak seul, c'est un casse-tête (OAuth2/XOAUTH2 pas universel côté clients). - **Portable / souverain** : l'annuaire reste un standard LDAP — chaque écosystème (tenant) a **son OpenLDAP + son Keycloak fédéré**, réplicable à l'identique. Sert directement la preuve de portabilité multi-tenant. - **Séparation des responsabilités** : LDAP = qui existe ; Keycloak = comment on se connecte au web. Chacun fait ce qu'il fait de mieux. ## Conséquences pour Set-OPS - `serveur_openldap` (déployé) = le pilier annuaire, source de vérité. - `serveur_keycloak` = pilier SSO, à **fédérer sur OpenLDAP** (User Federation → LDAP). - `serveur_dovecot` / `serveur_postfix` = auth **LDAP direct** (cohérent avec ce modèle). - Les apps web déclarées dans le plan → clients **OIDC** de Keycloak. *Évolution possible (plus tard) : XOAUTH2 pour le mail via Keycloak, si les clients suivent. Ça n'est pas requis et ne change pas la source de vérité (LDAP).*