3. Keycloak als Identity- und Access-Management-Lösung

Status

Akzeptiert

Datum

25.03.2026

Kontext

Das Projekt benötigt eine Lösung für Authentifizierung und Autorisierung. Als Open-Source-Projekt soll die IAM-Lösung selbst gehostet werden können, keine Abhängigkeit von US-Cloud-Anbietern erzeugen und keine laufenden Lizenzkosten verursachen. Alle anderen Services des Projekts werden ebenfalls self-hosted betrieben.

Entscheidung

Wir setzen Keycloak als zentrale IAM-Lösung ein.

Begründung

  • Open Source und kostenlos

  • Self-Hosting gewährleistet volle Datensouveränität ohne Abhängigkeit von US-Cloud-Anbietern

  • Passt zur Self-Hosting-Strategie der übrigen Services im Projekt

  • Breite Community, umfangreiche Dokumentation und standardisierte Protokolle (OIDC, SAML)

  • Das Organisations-Feature ermöglicht es, dass Benutzer mehreren Organisationen angehören können

Betrachtete Alternativen

Auth0

Managed Identity-Plattform.

  • Vorteile

    • Geringer Betriebsaufwand

    • Schnelle Integration

  • Nachteile

    • US-Anbieter - Datenschutzanforderungen schwer umsetzbar

    • Kein Self-Hosting möglich

    • Kosten steigen mit Nutzerzahl

Azure AD / Entra ID

Microsofts Cloud-basierte Identity-Lösung.

  • Vorteile

    • Tiefe Integration in das Microsoft-Ökosystem

    • Managed Service mit hoher Verfügbarkeit

  • Nachteile

    • US-Anbieter - gleiche Datenschutzproblematik wie Auth0

    • Kein Self-Hosting möglich

    • Lizenzkosten, nicht kompatibel mit dem Open-Source-Ansatz des Projekts

Eigene Lösung

Eigenentwicklung einer Authentifizierungs- und Autorisierungsschicht.

  • Vorteile

    • Maximale Kontrolle über Funktionsumfang und Architektur

  • Nachteile

    • Enormer Entwicklungs- und Wartungsaufwand

    • Hohes Sicherheitsrisiko durch fehlende Expertise im IAM-Bereich

    • Kein Community-Support

Konsequenzen

  • Eigenverantwortung für Betrieb, Updates und Sicherheitspatches - Hardening und zeitnahes Einspielen von Security-Updates sind zwingend erforderlich

  • Realm-Konfiguration wird als JSON-Export versioniert und über das Custom Docker Image ausgeliefert

  • Integration über OIDC: Frontend nutzt einen Public Client, Backend validiert JWT Bearer Tokens

  • Benutzer- und Rollenverwaltung erfolgt zentral in Keycloak