Das Team stellt Grafana mit drei Klicks „vorübergehend“ zur Prüfung bereit. Kein natives SSO, Standard-Administratorkennwort „später“ geändert. Zwei Wochen später verweist Port 443 immer noch mit einer einfach zu erzwingenden hausgemachten Basisauthentifizierung auf das Internet.
Ein OAuth-Proxy (oauth2-proxy, OAuth2 Proxy, Vouch usw.) platziert die Authentifizierung dort, wo die Legacy-Anwendung sie nicht durchführen kann – vorne und nicht innen.
Typische Architektur
Client → TLS-Terminator (nginx/Traefik) → oauth2-proxy → App-Upstream. Ablauf: IdP-Umleitung (Google Workspace, Azure AD, Keycloak) → Rückruf → verschlüsseltes Cookie → App-Zugriff.
Die App bleibt im internen HTTP; nur der Rand ist freigelegt.
Sichere Konfiguration
Cookie: Sicher, HttpOnly, mindestens SameSite=Lax. drehbares „--cookie-secret“. Beschränken Sie „--email-domain“- oder OIDC-Gruppen.
Stellen Sie niemals einen direkten Upstream ohne parallele Authentifizierung bereit – sofortige Umgehung.
Header und Vertrauen
Übergeben Sie X-Forwarded-User/Email/Groups. Die App sollte diesen Überschriften aus aller Welt nicht glauben; Firewall- oder Netzwerkrichtlinie: nur vom Proxy.
Ordnen Sie für die RBAC-App (Administrator vs. Betrachter) OIDC-Ansprüche → Header zu oder verwenden Sie einen zweiten Proxy-Pfad pro Rolle.
Sonderfälle
Eingehende Webhooks: Authentifizierungsumgehungsroute mit separatem HMAC-Geheimnis.
Maschinen-API: nicht oauth2-proxy – mTLS oder dediziertes API-Token.
Gesundheitsprüfungen: „/health“ ohne Authentifizierung für Load Balancer, ohne vertrauliche Daten.
Betrieb
Zentralisierte Protokolle von Authentifizierungsfehlern. Sitzungsablauf im Einklang mit den Unternehmensrichtlinien. Offboarding-Verfahren dokumentieren: IdP-Sitzungen widerrufen + geheimes Cookie bei sensiblem Abgang rotieren.
Checkliste für die Bereitstellung
- Upstream-App direkt aus dem Internet nicht zugänglich
- Cookie Secure HttpOnly SameSite konfiguriert
- „--email-domain“ oder restriktive OIDC-Gruppen
- Aufgelistete Umgehungsrouten (Gesundheit, HMAC-Webhook)
- X-Forwarded-*-Header vertrauenswürdige App-Seite allein vom Proxy
- WebSocket wurde durchgängig getestet
- Die Sitzung läuft im Einklang mit der Personalpolitik ab
- Zentralisierte Authentifizierungsfehlerprotokolle
- Dokumentiertes Offboarding-Verfahren
- Getestete Zertifikatserneuerung ohne Massenabmeldung
Validieren Sie mit einem internen „Bypass-Proxy“-Pentest – bei Erfolg korrigieren Sie das Netzwerk, bevor Sie SSO ankündigen.
Team- und Lebenszyklusintegration
Onboarding: Neuer Ingenieur erhält IdP-Zugriff + Dokument-ProxyJump/OAuth-Pfad – keine direkte Upstream-URL. Offboarding: IdP widerrufen und Sitzungscookies ungültig machen (Cookie-Geheimnis bei sensiblem Abgang rotieren).
Multi-Umgebung: Oauth2-Proxy-Staging zur IdP-Staging-App-Registrierung – geben Sie client_id prod/staging nicht weiter.
Beobachtbarkeit: Metrik 401/403 Oauth-Proxy vs. 502 Upstream – zwischen Authentifizierungsfehler und App-Ausfall unterscheiden.
Einschränkungen: oauth2-proxy ersetzt nicht die Feinautorisierung (RBAC-App) – es authentifiziert, die App autorisiert weiterhin.
Interne Multitools (Grafana + Prometheus + Kibana): ein oauth2-Proxy pro Upstream oder Forward Auth Central Traefik – beide funktionieren, keine geheimen Cookies mischen.
Sitzungslänge vs. Leerlaufzeitüberschreitung: An die Datensensibilität anpassen (Produktprotokolle vs. HR-Wiki).
Das lokale Break-Glass-Konto ist standardmäßig deaktiviert und nur über das Break-Glass-Verfahren aktiviert – keine vergessene Hintertür.
Führen Sie ein datiertes Runbook, Vorher-/Nachher-Kennzahlen und eine Überprüfung nach dem Vorfall – kumulative Disziplin vermeidet Panik am Freitagabend.
Führen Sie ein datiertes Runbook, Vorher-/Nachher-Kennzahlen und eine Überprüfung nach dem Vorfall – kumulative Disziplin vermeidet Panik am Freitagabend.
Führen Sie ein datiertes Runbook, Vorher-/Nachher-Kennzahlen und eine Überprüfung nach dem Vorfall – kumulative Disziplin vermeidet Panik am Freitagabend.
Führen Sie ein datiertes Runbook, Vorher-/Nachher-Kennzahlen und eine Überprüfung nach dem Vorfall – kumulative Disziplin vermeidet Panik am Freitagabend.
Führen Sie ein datiertes Runbook, Vorher-/Nachher-Kennzahlen und eine Überprüfung nach dem Vorfall – kumulative Disziplin vermeidet Panik am Freitagabend.
Führen Sie ein datiertes Runbook, Vorher-/Nachher-Kennzahlen und eine Überprüfung nach dem Vorfall – kumulative Disziplin vermeidet Panik am Freitagabend.
Netzwerk-SSO
Upstream über IP erreichbar = SSO-Bypass. Anmeldung <30s dokumentiert.
Führen Sie ein datiertes Runbook, Vorher-/Nachher-Kennzahlen und eine Überprüfung nach dem Vorfall – kumulative Disziplin vermeidet Panik am Freitagabend.
Entscheide dich und gehe ohne blinden Fleck voran
- Direkten Internetzugriff zur Upstream-App unterbrechen – nur der Proxy muss öffentlich erreichbar sein.
- Konfigurieren Sie sichere HttpOnly SameSite-Cookies – aufgelistete Routen umgehen (Zustand, signierte HMAC-Webhooks).
- OIDC-Domänen oder -Gruppen einschränken – Ablaufsitzung im Einklang mit der HR-Richtlinie, zentralisierte Authentifizierungsprotokolle.
- WebSocket End-to-End testen – X-Forwarded-*-Header, denen nur der Proxy vertraut.
- Pentest-Bypass-Proxy – dokumentiertes Offboarding-Verfahren, Zertifikatserneuerung ohne massive Abmeldung.
Vergleichen Sie Hosting, das für SSO-Stacks geeignet ist, über das Verzeichnis und unsere Leitfäden.
Häufig gestellte Fragen
oauth2-proxy vs. klassischer Reverse-Proxy?
oauth2-proxy verwaltet den OAuth/OIDC-Fluss und setzt ein Sitzungscookie; Nginx allein validiert die IdP-Identität nicht ohne zusätzliches Modul.
Erkennt die App den echten Benutzer?
Über X-Forwarded-User/Email/Groups-Header, sofern konfiguriert – die App sollte ihnen nur vom Proxy (Netzwerk-ACL) vertrauen.
Wie verwalte ich WebSockets?
Aktivieren Sie die Upstream-WebSocket-Unterstützung auf nginx/traefik. oauth2-proxy muss Upgrade-Routen mit demselben Sitzungscookie zulassen.
Risiko bei schlechter Konfiguration?
Umgehung über IP-Whitelist zu groß, Cookie ohne Secure/HttpOnly oder App, die aus dem Internet gefälschte Header akzeptiert.
Bevor Sie „SSO aktiviert“ ankündigen, versuchen Sie, den Upstream zu erreichen, ohne über den Proxy zu gehen – wenn es funktioniert, ist es noch nicht vorbei.
