Het team stelt Grafana in drie klikken “tijdelijk” beschikbaar voor audit. Geen native SSO, standaard beheerderswachtwoord gewijzigd “later”. Twee weken later verwijst poort 443 nog steeds naar internet met eenvoudig te brute, zelfgemaakte basisauthenticatie.
Een OAuth-proxy (oauth2-proxy, OAuth2-proxy, Vouch, etc.) plaatst authenticatie waar de oudere applicatie dit niet kan doen: vooraan, niet erin.
Typische architectuur
Klant → TLS-terminator (nginx/Traefik) → oauth2-proxy → app upstream. Stroom: IdP-omleiding (Google Workspace, Azure AD, Keycloak) → terugbellen → gecodeerde cookie → app-toegang.
De app blijft in interne HTTP; alleen de rand is zichtbaar.
Veilige configuratie
Cookie: Veilig, HttpOnly, SameSite=Lax minimum. draaibaar --cookie-geheim. Beperk --email-domein of OIDC-groepen.
Stel nooit direct upstream bloot zonder parallelle verificatie: onmiddellijke bypass.
Headers en vertrouwen
X-doorgestuurde gebruiker/e-mail/groepen doorgeven. De app mag deze headers van over de hele wereld niet geloven; firewall- of netwerkbeleid: alleen vanaf de proxy.
Voor de RBAC-app (beheerder versus kijker) wijst u OIDC-claims toe → headers of gebruikt u een tweede proxypad per rol.
Speciale gevallen
Inkomende webhooks: auth-bypassroute met afzonderlijk HMAC-geheim.
Machine-API: niet oauth2-proxy — mTLS of speciaal API-token.
Statuscontroles: /health zonder verificatie voor load balancer, zonder gevoelige gegevens.
Bediening
Gecentraliseerde logboeken van verificatiefouten. Sessieverloop in lijn met het bedrijfsbeleid. Offboardingprocedure documenteren: IdP-sessies intrekken + geheime cookie roteren bij gevoelig vertrek.
Implementatiecontrolelijst
- Upstream-app niet rechtstreeks toegankelijk vanaf internet
- Cookie Secure HttpOnly SameSite geconfigureerd
--e-maildomeinof beperkende OIDC-groepen- Omzeil routes vermeld (gezondheid, HMAC-webhook)
- X-Forwarded-* headers vertrouwde app-kant alleen van proxy
- WebSocket end-to-end getest
- Sessie verloopt in lijn met HR-beleid
- Gecentraliseerde logboeken voor verificatiefouten
- Gedocumenteerde offboardingprocedure
- Geteste certificaatvernieuwing zonder massaal uitloggen
Valideer met een interne ‘bypass proxy’-pentest. Indien succesvol, corrigeer dan het netwerk voordat u SSO aankondigt.
Team- en levenscyclusintegratie
Onboarding: nieuwe engineer krijgt IdP-toegang + doc ProxyJump/oauth-pad - geen directe upstream-URL. Offboarding: IdP intrekken en sessiecookies ongeldig maken (cookie-geheim roteren bij gevoelig vertrek).
Meerdere omgevingen: oauth2-proxy staging naar IdP staging-app-registratie - deel client_id prod/staging niet.
Waarneembaarheid: metrische 401/403 oauth-proxy versus 502 upstream - onderscheid auth-mislukking versus app-down.
Beperkingen: oauth2-proxy vervangt geen boeteautorisatie (RBAC-app) - het authenticeert, de app autoriseert nog steeds.
Interne multitools (Grafana + Prometheus + Kibana): een oauth2-proxy per upstream of forward auth centrale Traefik - beide werken, combineren geen geheime cookies.
Sessielengte versus time-out bij inactiviteit: afstemmen op gegevensgevoeligheid (prod-logboeken versus HR-wiki).
Lokaal breekglasaccount standaard uitgeschakeld, alleen ingeschakeld via de breekglasprocedure - geen vergeten achterdeur.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Netwerk-SSO
Upstream bereikbaar via IP = SSO-bypass. Inloggen <30s gedocumenteerd.
Houd een gedateerd runbook bij, voor/na-statistieken en beoordeling na incidenten: cumulatieve discipline voorkomt paniek op vrijdagavond.
Beslis en ga vooruit zonder blinde vlek
- Schakel de directe internettoegang uit tot de upstream-app – alleen de proxy mag openbaar bereikbaar zijn.
- Configureer Secure HttpOnly SameSite-cookies — omzeil de vermelde routes (gezondheid, ondertekende HMAC-webhooks).
- Beperk OIDC-domeinen of -groepen – vervalsessie afgestemd op HR-beleid, gecentraliseerde authentificatielogboeken.
- Test WebSocket end-to-end: X-Forwarded-* headers die alleen door de proxy worden vertrouwd.
- Pentest bypass proxy — gedocumenteerde offboarding-procedure, certificaatvernieuwing zonder massaal uitloggen.
Vergelijk hosting geschikt voor SSO-stacks via de overzicht en onze gidsen.
Veelgestelde vragen
oauth2-proxy versus klassieke omgekeerde proxy?
oauth2-proxy beheert de OAuth/OIDC-stroom en stelt een sessiecookie in; nginx alleen valideert de IdP-identiteit niet zonder extra module.
Ziet de app de echte gebruiker?
Via X-Forwarded-User/Email/Groups headers, indien geconfigureerd: de app zou ze alleen moeten vertrouwen via de proxy (netwerk-ACL).
Hoe WebSockets beheren?
Schakel upstream WebSocket-ondersteuning in op nginx/traefik; oauth2-proxy moet upgraderoutes met dezelfde sessiecookie toestaan.
Risico bij slecht geconfigureerd?
Omzeilen via IP-whitelist te groot, cookie zonder Secure/HttpOnly, of app die headers accepteert die van internet zijn vervalst.
Voordat u 'SSO ingeschakeld' aankondigt, probeert u de upstream te bereiken zonder via de proxy te gaan. Als het werkt, is het nog niet voorbij.
