Fra Nais-plattformen · Bygd for gjenbruk

wonderwall

Applikasjonen din trenger aldri å lære OAuth2.

wonderwall er en reverse proxy som spiller rollen som OpenID‑Connect‑klient, vanligvis som en sidecar til applikasjonen din. Den tar hele innloggingen mot identitetsleverandøren og sender forespørselen videre til appen med brukerens token påkoblet.

Go·MIT-lisens·Kubernetes-sidecar

  1. Nettleseren

    Sender brukeren til /oauth2/login

  2. wonderwall

    Går Authorization Code‑flyten med leverandøren

  3. Applikasjonen din

    Får forespørselen med Authorization: Bearer

Oppkoblingen skjer én gang. Appen ser bare en ferdig innlogget bruker.

To måter å sette den opp på

wonderwall snakker med enhver identitetsleverandør som følger OpenID Connect — den kjenner ikke leverandørens navn, bare protokollen. Velg oppsettet som passer perimeteren din.

Standalone-modus standard

Én sidecar per app

For zero‑trust-oppsett der hver applikasjon har sin egen perimeter og sin egen klient. Sidecaren kjører rett ved siden av appen og beskytter akkurat den.

SSO-modus

Delt innlogging på ett domene

For felles autentisering på tvers av flere applikasjoner på et delt domene. Én server holder sesjonen, og appene deler den gjennom en SSO-proxy.

Protokollstøtte: OpenID Connect Authorization Code Flow, med mål om å være OAuth 2.1-kompatibel.

Hvorfor en sidecar?

Fordi innlogging er den samme jobben uansett hvilket språk appen er skrevet i. Legger du den i en sidecar, blir den gjort riktig én gang, og appen slipper å eie en eneste linje autentiseringskode.

01

Null autentiseringskode i appen

Ingen OAuth2-bibliotek, ingen callback-håndtering, ingen tokenvalidering å vedlikeholde. Appen leser brukeren fra en vanlig HTTP-forespørsel.

02

Ethvert språk, ethvert rammeverk

Sidecaren bryr seg ikke om appen er Go, Java, Node eller noe annet. Kontrakten er HTTP — det alle web-rammeverk allerede forstår.

03

Token påkoblet automatisk

Så lenge sesjonen er gyldig, legges brukerens access‑token på hver forespørsel videre til appen som Authorization: Bearer <token>.

Endepunktene den legger til

wonderwall eksponerer et sett stier under /oauth2/. Nettleseren og appen trenger stort sett bare de to øverste — resten håndterer sidecaren selv.

GET /oauth2/login
Starter OpenID Connect Authorization Code-flyten
GET /oauth2/logout
Lokal utlogging og videre til global/single-logout
GET /oauth2/logout/local
Kun lokal utlogging
GET /oauth2/session
Returnerer metadata om brukerens sesjon
POST /oauth2/session/refresh
Fornyer tokenene i sesjonen
GET /oauth2/session/forwardauth
Sjekker sesjonen og fornyer den ved behov
GET /oauth2/callback
Tar imot callbacket fra identitetsleverandøren
GET /oauth2/logout/callback
Tar imot utloggings-tilbakekallet fra leverandøren
GET /oauth2/logout/frontchannel
Håndterer global utlogging initiert av leverandøren

Kom i gang

Hent containeren, pek den på OpenID-leverandøren din og på appen den skal beskytte. Da tar sidecaren resten.

container image
ghcr.io/nais/wonderwall
miljøvariabler (standalone)
WONDERWALL_OPENID_CLIENT_ID=<klient-id>
WONDERWALL_OPENID_CLIENT_JWK=<privat-nøkkel-jwk>
WONDERWALL_OPENID_WELL_KNOWN_URL=https://leverandor/.well-known/openid-configuration
WONDERWALL_INGRESS=https://din-app.example.no
WONDERWALL_UPSTREAM_HOST=127.0.0.1:8080
WONDERWALL_BIND_ADDRESS=0.0.0.0:3000
WONDERWALL_ENCRYPTION_KEY=<openssl rand -base64 32>

Bruk WONDERWALL_OPENID_CLIENT_SECRET i stedet for _CLIENT_JWK om leverandøren din bruker client secret. For flere replikaer legger du til WONDERWALL_REDIS_URI som delt sesjonslager.

Ta den i bruk i din virksomhet

wonderwall er en frittstående reverse proxy. Den er bygd på Nais-plattformen, men vet ingenting om Nav — alt den trenger er en OpenID-leverandør og et sted å kjøre en container.

Det du trenger

  • En identitetsleverandør som følger OpenID Connect
  • Et sted å kjøre en container, gjerne som sidecar til appen
  • En håndfull miljøvariabler — det er hele grensesnittet

Det du kan forvente

MIT-lisensiert og fritt å bruke. Vi lover ingen support-SLA, men issues og pull requests er velkomne — koden driftes daglig i Nav, så den blir vedlikeholdt uansett.

Si gjerne fra hvis du tar den i bruk. Det er slik vi vet at det åpne arbeidet virker.

Kjører hvor som helst du kan kjøre en container