78 lines
3.5 KiB
Markdown
78 lines
3.5 KiB
Markdown
---
|
|
title: "Authentik bag en reverse proxy: forward auth, outposts og 502-fælden"
|
|
description: "Forward auth eller proxy provider? Og hvorfor store auth-headers giver 502 i nginx, når Authentik sidder bagved."
|
|
date: 2026-06-05
|
|
taxonomies:
|
|
tags: [authentik, reverse-proxy, oidc, nginx]
|
|
draft: false
|
|
extra:
|
|
godkendt: "v1:b0b1b6d1a125dc01aef63fec8fd88db9f00039d8215137ec20c9cae234bce68a"
|
|
---
|
|
|
|
Når du sætter **Authentik** bag en reverse proxy, skal du tidligt træffe et valg:
|
|
skal proxyen selv håndtere applikationstrafikken og kun spørge Authentik
|
|
*"må den her bruger?"*, eller skal Authentik stå helt foran? De to modeller hedder
|
|
**forward auth** og **proxy provider**, og de løser hver sit problem.
|
|
|
|
## Forward auth kontra proxy provider
|
|
|
|
Med **forward auth** bruger du din eksisterende reverse proxy til selve trafikken,
|
|
og Authentiks **outpost** bliver kun spurgt om authentication og authorization.
|
|
Det er den model jeg foretrækker, fordi min proxy i forvejen styrer TLS, routing
|
|
og certifikater .. Authentik skal bare sige god eller ej.
|
|
|
|
Med en **proxy provider** lader du Authentik proxye trafikken hele vejen. Det er
|
|
enklere for enkeltstående apps, men du giver afkald på noget kontrol over edge'en.
|
|
|
|
For at bruge forward auth vælger du en af forward-auth-tilstandene på proxy
|
|
provideren og konfigurerer din reverse proxy til at sende auth-tjek til outposten.
|
|
Vælg **domain-level** hvis du vil dele login på tværs af mange subdomæner, og
|
|
**single application** hvis det kun gælder én app.
|
|
|
|
## 502-fælden: for store auth-headers
|
|
|
|
Her er den der koster timer. Alt virker, men en gang imellem .. eller for nogle
|
|
brugere .. svarer appen med **502 Bad Gateway**. Det er ofte fordi auth-proxyen
|
|
sender **meget store response-headers** tilbage (tænk mange grupper-claims eller
|
|
lange tokens), og nginx' default-buffere er for små til at rumme dem.
|
|
|
|
Løsningen er at skrue op for buffer-størrelserne i nginx:
|
|
|
|
```nginx
|
|
proxy_buffers 8 16k;
|
|
proxy_buffer_size 32k;
|
|
```
|
|
|
|
Justér tallene op hvis du har mange grupper på din bruger. Det er ikke en
|
|
Authentik-bug, det er nginx der nægter at videresende en header den synes er for
|
|
stor.
|
|
|
|
## WebSockets og HTTP/1.1 er et krav
|
|
|
|
Authentik kommunikerer med sine **outposts over WebSockets**, og din reverse proxy
|
|
**skal** kunne tale HTTP/1.1 eller nyere. Kører proxyen i en gammel
|
|
HTTP/1.0-tilstand, eller mangler den `Upgrade`- og `Connection`-headerne, så får
|
|
outposten aldrig forbindelse, og din UI viser bare `502 authentik starting...` i
|
|
en uendelighed.
|
|
|
|
## Sørg for at proto-headeren er sat
|
|
|
|
Det samme råd som med ren OIDC gælder her: din proxy skal sende
|
|
`X-Forwarded-Proto`, `X-Forwarded-Host` og `X-Forwarded-For` videre. Gør den ikke
|
|
det, bygger Authentik forkerte redirect-URI'er, og du ender i den klassiske
|
|
`redirect_uri`-fejl .. nu bare med et ekstra lag proxy at fejlsøge igennem.
|
|
|
|
## Min anbefaling
|
|
|
|
Start med **forward auth** hvis du allerede har en reverse proxy du er glad for.
|
|
Hold proxyens buffere store nok fra dag ét, tjek at WebSockets går igennem, og
|
|
send dine forwarded-headers korrekt. Så er du fri for langt de fleste af de fejl
|
|
jeg har brugt aftener på.
|
|
|
|
## Kilder og videre læsning
|
|
|
|
- [Authentik docs: Forward auth](https://docs.goauthentik.io/add-secure-apps/providers/proxy/forward_auth/)
|
|
- [Authentik docs: Reverse proxy](https://docs.goauthentik.io/install-config/reverse-proxy/)
|
|
- [Authentik #2247: 502 "authentik starting..."](https://github.com/goauthentik/authentik/issues/2247)
|
|
- [Authentik #18445: nginx-proxy-manager setup](https://github.com/goauthentik/authentik/discussions/18445)
|