Set-OPS comme compagnon pédagogique : chaque service = une lentille sur un fondamental TIC, méthodes génériques (on apprend OIDC, pas Keycloak). Socle (source versionnée dans wiki/, à publier dans le wiki Forgejo) : - Home : cadrage (moteur souverain ET outil d'apprentissage) ; - _Sidebar : navigation (~15 unités, pilote active, reste à venir) ; - Identité-et-SSO : unité-pilote, moule à 4 temps (concept → Set-OPS → transférable → à toi de jouer) avec exercices casse-répare. Le wiki pointe vers docs/ (anti-dérive), ne le recopie pas. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.6 KiB
Identité & SSO
Unité d'apprentissage — une lentille sur un fondamental des TIC. Moule : ① le concept → ② comment Set-OPS le fait → ③ pourquoi c'est transférable → ④ à toi de jouer.
① Le concept (générique)
Authentification vs autorisation — deux questions distinctes, souvent confondues :
- Authentifier = qui es-tu ? (prouver son identité, ex. mot de passe).
- Autoriser = as-tu le droit ? (permissions une fois identifié).
L'annuaire = la source de vérité des identités. Un seul endroit où existent les comptes ; tout le reste s'y réfère. Une identité, un mot de passe — partout.
SSO (Single Sign-On) = une authentification donne accès à N services, sans se reconnecter à chacun.
OIDC / OAuth2 = le protocole standard du SSO web. L'application ne voit jamais ton mot de passe : elle délègue la connexion à un fournisseur d'identité (IdP), qui lui renvoie un jeton signé prouvant qui tu es.
Fédération = un système d'identité en délègue un autre (ex. l'IdP lit les comptes depuis l'annuaire, sans les recopier).
② Comment Set-OPS le fait (le vrai, dans le lab)
Trois pièces, un rôle chacun :
| Pièce | Rôle | Concept incarné |
|---|---|---|
OpenLDAP (serveur_openldap) |
l'annuaire — la source de vérité. testmail y vit. |
annuaire |
Keycloak (serveur_keycloak) |
le fournisseur d'identité (IdP) SSO. Il fédère OpenLDAP (lit les comptes en LDAP, lecture seule). | SSO, OIDC, fédération |
oauth2-proxy (serveur_oauth2_proxy) |
une passerelle OIDC pour les apps sans OIDC natif. | motif proxy d'authentification |
Les applications se branchent de deux façons :
- OIDC natif — Grafana, Forgejo → bouton « Se connecter avec Chezlepro ».
- Sans OIDC — Icinga Web 2 → placé derrière oauth2-proxy, qui fait l'OIDC à sa place.
Le flux, quand testmail ouvre Grafana :
Navigateur ──> Grafana : "connecte-moi"
Grafana ──> redirige vers Keycloak (IdP)
Keycloak ──> demande le mot de passe ; le VÉRIFIE contre OpenLDAP (fédération)
Keycloak ──> renvoie au navigateur un CODE
Navigateur──> Grafana échange le code contre un JETON signé
Grafana ──> crée la session : "tu es testmail" ✔
Résultat : une identité (testmail, un seul mot de passe LDAP) ouvre le courriel, Grafana,
Forgejo et Icinga. Change le mot de passe une fois, il change partout.
③ Pourquoi c'est transférable
Tu n'as pas appris « Keycloak ». Tu as appris l'annuaire + OIDC + la fédération + le motif passerelle. Le même schéma existe partout :
| Set-OPS | Équivalents ailleurs |
|---|---|
| OpenLDAP | Active Directory · FreeIPA · 389-DS |
| Keycloak | Entra ID (ex-Azure AD) · Okta · Authentik · Zitadel |
| oauth2-proxy | tout reverse-proxy OIDC (Traefik ForwardAuth, Pomerium…) |
| Fédération LDAP→IdP | AD → ADFS/Entra ; annuaire → n'importe quel IdP |
Change les produits, le schéma reste. C'est ça, un savoir générique.
④ À toi de jouer
Prérequis : accès au lab (VPN),
/etc/hostspointant les services sur l'edge.
- Vis le SSO. Ouvre
https://grafana.lab.chezlepro.internal→ « Se connecter avec Chezlepro » →testmail. Puis ouvre Forgejo, puis Icinga : tu n'es reconnecté nulle part. - Observe le flux. Rouvre Grafana en navigation privée, ouvre les outils dév (F12 → Réseau) :
repère la redirection vers Keycloak, puis le retour avec un
code=. C'est ① en action. - Interroge l'annuaire (la source de vérité). Sur un nœud avec
ldap-utils:
Tu vois l'entrée que Keycloak fédère — il ne l'a pas recopiée.ldapsearch -x -H ldaps://id-ldap-01.lab.chezlepro.internal \ -b ou=people,dc=lab,dc=chezlepro,dc=internal '(uid=testmail)' - Casse & répare (la fédération). Dans la console admin Keycloak → User Federation → désactive le fournisseur LDAP. Reconnecte-toi : échec (l'IdP ne voit plus l'annuaire). Réactive : ça remarche. Tu viens de sentir la dépendance requise entre l'IdP et l'annuaire.
Pour aller plus loin (référence technique — dépôt)
- Rôles :
roles/serveur_openldap,roles/serveur_keycloak,roles/serveur_oauth2_proxy. - Passerelle générique :
roles/serveur_oauth2_proxy/(README) — placer du SSO devant toute app. - Thème de connexion (identité Alliance) :
roles/serveur_keycloak/files/themes/alliance-boreale/. - Concept de liaison requise (IdP ⟶ annuaire) :
docs/bindings-conception.md§11.