mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 05:24:43 +02:00
feat(auth): Authentik en hub utilisateur public — SSO de bout en bout (#82)
L'entrée unique devient la page « My applications » d'Authentik (kaya.freeboxos.fr:9081) : login → tuiles des apps autorisées → SSO vers Guacamole (:9080). Plus de comptes locaux Guacamole. - Services LoadBalancer dédiés (MetalLB .201 Authentik / .202 Guacamole) : le DNAT par port ne peut pas router par Host derrière Traefik :80 - gateway : DNAT 9081→.201:9000 et 9080→.202:8080 + rate-limit par VIP - Guacamole : endpoints OIDC sur l'URL publique canonique (LAN inclus, hairpin Freebox) + retour au SSO direct (openid prioritaire) - doc : section « Accès externe » réécrite (hub, chaîne, config provider) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
cf09e404ef
commit
5a4190faaa
7 changed files with 92 additions and 40 deletions
|
|
@ -85,22 +85,35 @@ kubectl -n auth create secret generic guacamole-secret \
|
|||
3. Settings → Users : les comptes Authentik apparaissent après leur **premier login**
|
||||
(`POSTGRESQL_AUTO_CREATE_ACCOUNTS=true`) → leur assigner les connexions (READ).
|
||||
|
||||
## Accès externe (Internet) — `kaya.freeboxos.fr:9080`
|
||||
## Accès externe (Internet) — Authentik en hub utilisateur
|
||||
|
||||
Le portail est joignable depuis Internet **sans VPN** (choix assumé 2026-07-07,
|
||||
simplicité d'abord — le VPN WireGuard reste dispo, cf. `admin/infra/wireguard.md`) :
|
||||
**Authentik est la porte d'entrée** (page « My applications » : une tuile par app
|
||||
autorisée), le SSO fait le reste. Choix assumé 2026-07-07 : exposition directe sans
|
||||
VPN, simplicité d'abord (WireGuard reste dispo, cf. `admin/infra/wireguard.md`).
|
||||
|
||||
- **Chaîne** : `kaya.freeboxos.fr:9080` → redirection Freebox `9080/tcp → funk-s01`
|
||||
→ DNAT nftables `→ 192.168.10.200:80` (Traefik) → IngressRoute (host
|
||||
`kaya.freeboxos.fr` accepté) → Guacamole
|
||||
- **Auth externe = comptes locaux Guacamole** (Settings → Users → New user + mot de
|
||||
passe fort + cocher ses connexions). **Authentik n'est PAS exposé** : le SSO ne
|
||||
fonctionne que du LAN (le lien « OpenID » échoue depuis Internet — normal).
|
||||
- **Garde-fous** : rate-limit nftables (30 connexions neuves/min) + anti-bruteforce
|
||||
Guacamole (5 échecs → ~5 min) + mots de passe forts obligatoires. ⚠️ HTTP **non
|
||||
chiffré** : mots de passe des comptes locaux interceptables en théorie — ne pas
|
||||
réutiliser un mot de passe important, et envisager TLS (vrai domaine + Let's
|
||||
Encrypt) ou l'option TOTP de Guacamole si l'usage s'installe.
|
||||
| URL publique | Service | Chaîne |
|
||||
|---|---|---|
|
||||
| `http://kaya.freeboxos.fr:9081` | **Authentik** (hub + login) | Freebox `9081/tcp → s01` → DNAT → VIP MetalLB `192.168.10.201:9000` |
|
||||
| `http://kaya.freeboxos.fr:9080` | Guacamole (via tuile SSO) | Freebox `9080/tcp → s01` → DNAT → VIP `192.168.10.202:8080` |
|
||||
|
||||
- **URL canonique unique** : les endpoints OIDC de Guacamole pointent sur
|
||||
`kaya.freeboxos.fr` → **tout le monde, LAN inclus**, doit utiliser ces URLs (le LAN
|
||||
repasse par la Freebox, hairpin NAT). `portail.lab.local` affiche encore l'UI mais
|
||||
le SSO ramène sur l'URL publique.
|
||||
- Les VIPs dédiées **contournent Traefik** : un DNAT par port ne peut pas router par
|
||||
Host sur l'entrypoint unique :80.
|
||||
- **Un seul compte par personne (Authentik)** — plus de comptes locaux Guacamole.
|
||||
Parcours ami : `kaya.freeboxos.fr:9081` → login → tuile « Portail consoles » →
|
||||
console. Nouvelle app plus tard = nouveau provider + tuile, zéro compte en plus.
|
||||
- **Garde-fous** : rate-limit nftables (30 connexions neuves/min par service) +
|
||||
protections applicatives (Authentik : flows/lockout ; Guacamole : ban 5 échecs).
|
||||
⚠️ HTTP **non chiffré** : mots de passe interceptables en théorie — mots de passe
|
||||
dédiés, MFA/TOTP Authentik recommandé pour durcir, TLS (vrai domaine + Let's
|
||||
Encrypt) si l'usage s'installe.
|
||||
|
||||
Config côté Authentik (UI) : provider `guacamole` → **Redirect URI
|
||||
`http://kaya.freeboxos.fr:9080/`** ; application « Portail consoles » → **Launch URL
|
||||
`http://kaya.freeboxos.fr:9080/`**.
|
||||
|
||||
## Pièges / notes
|
||||
|
||||
|
|
@ -110,12 +123,11 @@ simplicité d'abord — le VPN WireGuard reste dispo, cf. `admin/infra/wireguard
|
|||
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"`** : formulaire local affiché en premier (requis
|
||||
pour les comptes locaux de l'accès Internet), lien « OpenID » en dessous pour le SSO
|
||||
LAN. La variante `"openid, *"` (redirection SSO immédiate, testée puis abandonnée
|
||||
le 2026-07-07) est incompatible avec l'accès externe sans exposer Authentik.
|
||||
NB : le compte SSO `Alkatrazz` a « Administer system » — admin possible par les
|
||||
deux chemins.
|
||||
3. **`EXTENSION_PRIORITY="openid, *"`** : arriver sur Guacamole = redirection
|
||||
immédiate vers Authentik (le hub). Conséquence : `guacadmin` inaccessible —
|
||||
l'admin passe par le compte SSO `Alkatrazz` (« Administer system »). Dépannage si
|
||||
Authentik est HS : remettre `"*, openid"` dans le deployment + re-sync (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/`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue