Architecture Decision Record

ADR 017: A Reverse-Proxy Outpost for the Apps That Can't Do OIDC

Seven web surfaces had no usable login. Rather than wait for each vendor to ship OIDC, they moved behind Authentik's embedded outpost — which makes an L4 AuthorizationPolicy the actual security boundary.

Status: Accepted  ·  Date: Sep 2026  ·  ← All ADRs


Context

ADR 004 established Authentik as the identity provider and a for_each map as the way to add SSO to an application. That pattern held — for applications that speak OIDC.

The gap was everything else. Seven web surfaces on this platform had no usable login:

Every one of these sits behind the same gateway and the same certificate as the applications that do have SSO, which is exactly what makes the gap easy to miss.

Options:

Decision

The embedded outpost fronts every web surface that cannot authenticate for itself. Seven applications are generated from a local.authentik_proxy_apps map in Terraform, in the same shape as the OIDC map beside it — provider, application, and group policy binding, one entry each.

The applications split into two classes, and the distinction matters more than it looks:

The deployment itself is one line per app: the embedded outpost is not a separate workload. It runs inside each authentik-server pod, is served off the same Service, and selects the provider by Host header — so routing a VirtualService at authentik-server (without rewriting authority) is the entire integration.

Reasoning

Tradeoffs

These are real, and the first one is the one I’d raise in a design review:

Outcome

Sixteen applications now sit behind Authentik: nine OIDC clients and seven behind the outpost. The claim ADR 004 made in its Outcome — that every web surface sits behind the same login — is true as of this record, and was not when it was written.

The more durable result is the audit itself. Six of these seven had no authentication at all, on a platform whose documentation, dashboards, and monitors all reported that identity was solved. Nothing was broken; everything was green. That story is written up separately: Everything Was Green.