Skip to content

SSO (Authentik)

Authentik is the identity provider for every human-facing service in the lab: one account, one login, and every app behind the same SSO flow. It is the "you only log in once" layer that makes a 15+ service self-hosted suite actually usable by real people.

The SSO map

Service Integration Login experience
Authentik (Blackrack ID) The identity provider itself
Vikunja (tasks) Native OIDC One click, straight in
Firefly III (finance) Reverse-proxy auth gate Redirected to SSO on first hit
wger (health) Django allauth OIDC One-step social login
Matrix / Element (chat) Synapse OIDC + SSO option Matrix credentials or SSO
Everything else behind Caddy forward_auth gate SSO by construction

The fluid login rule

Every integrated service must give a one-step, direct login: opening the service's entry URL redirects straight to Authentik (or, with an existing session, straight in) — with no intermediate "pick a login method" click. A service is not considered done until this is verified in a clean browser.

This rule has an engineering reason: friction at login is the top reason people abandon self-hosted tools, and every framework has a different way to skip its login chooser (a redirect parameter, a SOCIALACCOUNT_LOGIN_ON_GET flag, a forward_auth gate...). The platform keeps a per-service mechanism checklist so the UX contract is enforced, not hoped for.

Access broker

Agents can give users direct entry links through a narrow access broker that:

  • lists known apps and their SSO readiness,
  • returns the safe, fluid entry URL,
  • never mints browser sessions, cookies, OIDC codes, reset links, API tokens, or passwords.

Human SSO and agent API access are separate trust domains: a user's browser session and an agent's service token never mix, and agents cannot impersonate users.

Operational notes

  • Authentik runs in-cluster (server + worker) on its own managed PostgreSQL database, with backups covered by the shared database strategy.
  • App registrations and providers are managed as configuration; new apps are added with the fluid-login rule as an acceptance criterion.