docs: architecture d'identité/SSO (OpenLDAP source, Keycloak fédéré)
Modèle A arrêté : OpenLDAP = source de vérité des identités ; Keycloak = SSO web OIDC fédéré à LDAP (MFA, self-service) ; mail (Dovecot/Postfix) = bind LDAP direct. Une identité, un mot de passe, deux chemins d'auth, même OpenLDAP. Sert la portabilité multi-tenant. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
e01adac67b
commit
f3e78c55e1
2 changed files with 65 additions and 0 deletions
|
|
@ -3,6 +3,11 @@
|
|||
## 2026-07-02
|
||||
|
||||
### Décidé
|
||||
- **Architecture d'identité/SSO (`docs/identite-sso.md`).** Modèle A : **OpenLDAP source de
|
||||
vérité**, **Keycloak fédéré** (SSO web OIDC, MFA, self-service), **mail en bind LDAP
|
||||
direct**. Une identité, un mot de passe, deux chemins d'auth (web→Keycloak, mail→LDAP),
|
||||
tout adossé au même OpenLDAP. Sert la portabilité multi-tenant (chaque tenant = son LDAP +
|
||||
son Keycloak fédéré). Pas Keycloak-source (casse-tête mail + moins portable).
|
||||
- **Service courriel : pivot de Stalwart vers Postfix + Dovecot + rspamd.** La Phase 1
|
||||
Stalwart (`serveur_stalwart`) avait été prototypée et déployée (v0.16.11, install +
|
||||
démarrage en mode récupération). Le prototypage a révélé un projet **trop jeune/volatil
|
||||
|
|
|
|||
60
docs/identite-sso.md
Normal file
60
docs/identite-sso.md
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
# 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).*
|
||||
Loading…
Reference in a new issue