Set-OPS-Public/roles/serveur_oauth2_proxy
Daniel Allaire 26dc0469be get_url : garder les artefacts epingles a une version
Recensement apres l'echec du passage d'idempotence : 9 get_url sans aucune
garde, 1 avec.

Les quatre artefacts epingles (forgejo, keycloak, nextcloud, oauth2-proxy)
sont immuables PAR CONSTRUCTION — leur chemin de destination porte la version.
Les retelecharger n'a aucun sens, les recontacter encore moins. Gardes par une
verification d'existence.

Restent cinq cles de signature apt et un trousseau .deb, recuperes a chaque
passage : cinq serveurs externes x quatorze hotes = 70 allers-retours par
deploiement. Les garder supprimerait la dependance au prix de ne plus detecter
une rotation ; une cle tournee casse apt bruyamment, donc l'oubli se voit.
Arbitrage a rendre — pas a moi.

Sur une plateforme souveraine la question merite d'etre posee : combien de
serveurs tiers doivent etre joignables pour redeployer ce qu'on possede deja ?

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 14:01:12 -04:00
..
defaults sso : l'issuer et le nom d'hote se derivent de l'exposition declaree 2026-08-07 11:47:34 -04:00
handlers serveur_oauth2_proxy : passerelle SSO OIDC générique + Icinga Web 2 au SSO 2026-07-03 19:05:04 -04:00
meta authentification : chaque rôle déclare sa position, gardé par P29 2026-08-03 17:05:43 -04:00
tasks get_url : garder les artefacts epingles a une version 2026-08-09 14:01:12 -04:00
templates serveur_oauth2_proxy : passerelle SSO OIDC générique + Icinga Web 2 au SSO 2026-07-03 19:05:04 -04:00
README.md docs : un README par rôle (12 manquants) + carte remise à l'état du code 2026-07-29 11:32:06 -04:00

serveur_oauth2_proxy

Passerelle SSO générique : place Keycloak devant n'importe quelle application qui n'a pas d'OIDC natif. L'utilisateur s'authentifie une fois auprès de Keycloak ; l'application le reçoit via un en-tête (authentification « external »).

C'est le patron réutilisable qui évite d'écrire une intégration OIDC par application. Éprouvé devant Icinga Web 2.

Comment ça s'assemble

navigateur → edge nginx (TLS) → oauth2-proxy :4180 → application (127.0.0.1:8080)
                                       ↓
                                  Keycloak (OIDC)

L'application passe en auth: external et lit REMOTE_USER, posé par nginx depuis l'en-tête de la passerelle. Elle n'a aucune connaissance d'OIDC.

Rôle

  • Installe le binaire Go officiel depuis les releases GitHub (pas d'apt), sous /usr/local/bin/oauth2-proxy, avec un utilisateur système dédié.
  • Déploie la configuration et l'unité systemd, active le service.
  • Assère d'entrée toute la configuration OIDC obligatoire — pas de démarrage à moitié configuré.

Variables obligatoires (par instance)

Variable Rôle
serveur_oauth2_proxy_client_id Client OIDC déclaré dans Keycloak
serveur_oauth2_proxy_client_secret Secret du client (voûte)
serveur_oauth2_proxy_redirect_url https://<app>/oauth2/callback
serveur_oauth2_proxy_upstream Application protégée (ex. http://127.0.0.1:8080)
serveur_oauth2_proxy_cookie_secret 32 octets base64 (voûte, vault_oauth2_cookie)

Autres variables

Variable Défaut Rôle
serveur_oauth2_proxy_version v7.15.3 Version épinglée
serveur_oauth2_proxy_ecoute 0.0.0.0:4180 L'edge proxifie ici
serveur_oauth2_proxy_realm {{ identite_realm }} Realm applicatif
serveur_oauth2_proxy_issuer https://keycloak.<domaine>/realms/<realm> Émetteur OIDC
serveur_oauth2_proxy_email_domains * Tout utilisateur authentifié par Keycloak
serveur_oauth2_proxy_allow_unverified_email true Voir ci-dessous
serveur_oauth2_proxy_ca_bundle /etc/ssl/certs/ca-certificates.crt Racine step_ca (via client_pki)

Notes / limites

  • allow_unverified_email: true est nécessaire ici : les comptes viennent de l'annuaire LDAP, qui ne porte pas de drapeau email_verified. L'IdP est interne et de confiance ; sans ce réglage, aucune connexion ne passe.
  • La version est épinglée : une montée de version est un geste délibéré (relire les notes de version d'oauth2-proxy, les options changent de nom entre majeures).
  • Le service écoute en clair sur :4180 — le TLS est terminé à l'edge. À restreindre à l'edge par pare-feu (meta/flux.yml, pair: edge).
  • Une instance protège une application (upstream unique). Deux applications = deux instances (ou un déploiement par nœud applicatif).

Prérequis

  • client_pki (confiance step_ca pour joindre Keycloak en HTTPS) et serveur_keycloak actif.
  • Le client OIDC doit exister dans le realm Keycloak, avec la bonne URL de redirection.