feat(guacamole): SSO direct — redirection immédiate vers Authentik (#79)

EXTENSION_PRIORITY "openid, *" : plus de formulaire local, l'arrivée sur
portail.lab.local redirige directement vers Authentik. L'admin passe par
un compte SSO avec « Administer system » (guacadmin devient inaccessible ;
retour arrière = remettre "*, openid").

Doc : pièges slug d'application (≠ guacamole → JWKS 404) et anti-bruteforce
(IP Traefik bloquée pour tous après 5 échecs) découverts pendant la mise
en route.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
ALI YESILKAYA 2026-07-06 22:48:37 +02:00 committed by GitHub
parent 8137830e53
commit fbec998c21
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 21 additions and 7 deletions

View file

@ -93,11 +93,22 @@ kubectl -n auth create secret generic guacamole-secret \
serveur→serveur de Guacamole ne dépend pas de la résolution `lab.local` des pods.
L'issuer, lui, reste `http://auth.lab.local/...` (doit matcher le claim `iss` des
tokens émis via le navigateur).
3. **`EXTENSION_PRIORITY="*, openid"`** : garde le formulaire local (guacadmin) accessible
en plus du SSO — sans ça, redirection OIDC forcée et plus d'accès admin local.
4. **User `console` sans sudo** (volontaire) : le portail sert à observer/opérer léger.
3. **`EXTENSION_PRIORITY="openid, *"`** : arrivée sur le portail = **redirection
immédiate vers Authentik** (pas de formulaire local). Conséquence : `guacadmin` est
inaccessible — l'admin Guacamole passe par un compte SSO auquel on a coché
**« Administer system »** (fait pour `Alkatrazz`). Prérequis absolu avant d'activer :
avoir donné ce droit, sinon plus d'admin. Dépannage si Authentik est HS : remettre
`"*, openid"` dans `k8s/apps/guacamole/deployment.yaml` (le formulaire local revient).
4. **Le slug de l'application Authentik doit être exactement `guacamole`** : Authentik
le génère depuis le nom (« Portail consoles » → `portail-consoles`) et l'issuer/JWKS
deviennent faux → log Guacamole `Non 200 status code (404) ... /o/guacamole/jwks/`
et token rejeté. Corriger : Applications → Edit → Slug.
5. **Anti-bruteforce intégré** (extension `ban`) : 5 échecs → IP bloquée ~5 min. Derrière
Traefik, l'IP vue est celle du proxy → **le blocage touche tout le monde**. Patienter
ou redémarrer le pod guacamole pour purger.
6. **User `console` sans sudo** (volontaire) : le portail sert à observer/opérer léger.
L'administration passe par les comptes admin habituels, pas par Guacamole.
5. **Enregistrement des sessions** : possible (guacd + volume partagé) mais non configuré
7. **Enregistrement des sessions** : possible (guacd + volume partagé) mais non configuré
— gap connu, à ajouter si le portail s'ouvre à d'autres utilisateurs.
6. La config Authentik (provider, app, utilisateurs) et les connexions Guacamole vivent
8. La config Authentik (provider, app, utilisateurs) et les connexions Guacamole vivent
**en base, pas en IaC** — comme le Server Manager Satisfactory. Backup PG = gap connu.

View file

@ -59,9 +59,12 @@ spec:
value: "preferred_username"
- name: OPENID_SCOPE
value: "openid profile email"
# L'extension base (autorisation/connexions) passe avant l'OIDC (authentification)
# OIDC prioritaire : arrivée sur le portail = redirection immédiate vers
# Authentik (pas de formulaire local). Conséquence : guacadmin devient
# inaccessible — l'admin passe par un compte SSO avec « Administer system ».
# Dépannage sans Authentik : remettre "*, openid" ici et re-sync.
- name: EXTENSION_PRIORITY
value: "*, openid"
value: "openid, *"
- name: TZ
value: "Europe/Paris"
resources: