Architecture Decision Record

ADR 004: Authentik as the Identity Provider

One login for everything — including the infrastructure itself — with every provider and application declared in Terraform.

Status: Accepted  ·  Date: Aug 2025  ·  ← All ADRs


Context

A platform running a dozen web UIs accumulates a dozen credential stores unless identity is centralized early. I wanted single sign-on with MFA in one place, group-based authorization, and — critically — the identity configuration itself under version control.

Options:

Decision

Authentik is the identity provider for everything. Eleven OAuth2/OIDC provider-application pairs are generated in Terraform from a single for_each map — adding SSO to a new app is one map entry. Authorization is two groups: application admins and application users, bound per-application.

The deliberate part is scope: not just user apps (Paperless, Outline, Home Assistant, and the rest) but the infrastructure itself — Vault, ArgoCD, Gitea, and even Proxmox authenticate against Authentik via OIDC.

Reasoning

Tradeoffs

Outcome

Every web surface on the platform sits behind the same login. Onboarding the second user was a group membership, not eleven account creations. The for_each pattern has held: new applications get SSO in roughly ten lines of diff.