In modernen Unternehmensanwendungen ist der Login weit mehr als nur ein Zugangspunkt – er ist das Herzstück für Sicherheit, Benutzerfreundlichkeit und Integrationsfähigkeit.
Unser internes Tool „Tedras“, das zur Durchführung und Dokumentation von Bewertungsfahrten entwickelt wurde, nutzte bisher ausschließlich Microsoft Entra ID (ehemals Azure Active Directory) für die Anmeldung. Da das System zunehmend auch bei externen Partnern und Kunden auf Interesse stieß, mussten wir unser Authentifizierungskonzept erweitern: Ein zweiter, mandantenfähiger Login war gefragt, ohne dabei Sicherheit oder Einfachheit zu kompromittieren.
Unsere Wahl fiel auf Keycloak, eine Open-Source-Lösung für Identity & Access Management, die sich durch ihre Flexibilität, Standardkonformität und leichte Integration auszeichnet.
Unsere Architektur im Überblick
Das System besteht aus drei zentralen Komponenten:
– iOS-App (Swift, SwiftUI): Erfassung von Bewertungsfahrten mit Video, Sprachkommentar und GPS-Daten
– Backend (Golang, REST, PostgreSQL): Speicherung und Verwaltung aller Sessions, Photos und Videos
– Frontend (React, nginx): Visualisierung und Auswertung der erfassten Fahrtdaten
Die Dienste laufen containerisiert in Docker und werden über Kubernetes orchestriert.
Für die Authentifizierung wurde Keycloak als zentraler Identity-Provider eingebunden.
Wichtige technische Eckpunkte der Integration:
– OIDC-Flows: Beide Authentifizierungsmethoden – Entra ID und Keycloak – basieren auf dem OpenID-Connect-Standard, was eine saubere Trennung und einfache Erweiterbarkeit erlaubt
– Rollen- und Rechteverwaltung: Keycloak ermöglicht es, Benutzergruppen, Rollen und Scopes granular zu definieren
– Token-Validierung im Backend: Das Go-Backend prüft Access Tokens über die Keycloak-JWKS-Schnittstelle und gewährt Zugriff ausschließlich auf freigegebene Ressourcen
– Mandantenfähigkeit: Für jeden Kunden kann ein eigener Realm in Keycloak eingerichtet werden, was getrennte Benutzerverwaltungen und Branding erlaubt
Warum Keycloak?
Wir wollten keine Eigenentwicklung und keine Bastellösung. Die Entwicklung eines eigenen OIDC-basierten Authentifizierungsdienstes ist alles andere als trivial – insbesondere, wenn Sicherheitsanforderungen auf Enterprise-Niveau erfüllt werden müssen.
Ein solcher Dienst muss Token-Flows korrekt implementieren, Refresh-Mechanismen sicher handhaben, Zertifikate regelmäßig rotieren, Multi-Realm-Strukturen unterstützen und dabei noch DSGVO-konform sein. Fehler in diesen Bereichen können schnell kritische Sicherheitslücken bedeuten.
Statt diesen komplexen Weg selbst zu gehen, setzten wir bewusst auf Keycloak – eine bewährte Open-Source-Plattform, die:
– standardbasiert (OIDC, SAML, OAuth2) funktioniert
– in großen Unternehmen und Projekten erprobt ist
– einfach konfigurier- und deploybar bleibt
– keine Lizenzkosten verursacht
– sich nahtlos in bestehende DevOps-Pipelines integrieren lässt
So konnten wir uns auf die eigentliche Produktentwicklung konzentrieren und mussten das Rad nicht neu erfinden.
How-To: Keycloak in Kubernetes deployen
Ein großer Vorteil von Keycloak ist seine unkomplizierte Bereitstellung. Voraussetzung ist ein Kubernetes-Cluster mit kubectl-Zugriff, Helm (mindestens v3) sowie ein Ingress-Controller (z. B. Traefik oder NGINX).
Schritt 1: Helm-Repository hinzufügen
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
Schritt 2: Template für Values.yaml erzeugen
Damit du alle konfigurierbaren Werte siehst, kannst du die Standard-Konfiguration des Charts exportieren:
helm show values bitnami/keycloak > values.yaml
Diese Datei enthält sämtliche Parameter, die du an deine Umgebung anpassen kannst – von Datenbank-Credentials über Ingress-Einstellungen bis hin zu Ressourcen-Limits.
Schritt 3: Wichtige Anpassungen in der values.yaml
Für eine einfache, aber produktionsnahe Grundinstallation sollten insbesondere folgende Stellen angepasst werden:
auth:
adminUser: admin
adminPassword: "SuperSecret123"
service:
type: ClusterIP
port: 8080
ingress:
enabled: true
ingressClassName: traefik
hostname: keycloak.example.com
path: /auth
pathType: Prefix
tls: false
postgresql:
enabled: true
auth:
username: bn_keycloak
password: "PostgresPass123"
database: bitnami_keycloak
Schritt 4: Deployment starten
Sobald die Werte angepasst sind, genügt ein einziger Befehl:
helm install keycloak bitnami/keycloak -f values.yaml --namespace keycloak --create-namespace
Nach wenigen Minuten läuft eine vollständige Keycloak-Instanz – inklusive Datenbank, Ingress-Konfiguration und optionalem TLS-Support.
Schritt 5: Erste Anmeldung
Im Browser kannst du nun deine Keycloak-Instanz öffnen:
http://keycloak.example.com/auth
Anschließend loggst du dich mit dem konfigurierten Admin-Benutzer ein, ersetzt den Standard-Administrator und legst erste Realms, Clients und Benutzergruppen an.
Schritt 6: Erweiterungen & Automatisierung
Optional lassen sich Erweiterungen wie:
– Identity Brokering
– Custom Themes
– Realm-Templates
– automatisierte Backups
direkt über Helm-Parameter oder die REST-API konfigurieren. So wird aus einer einfachen Basisinstallation schnell ein produktives IAM-System, das sich vollständig in moderne CI/CD-Pipelines integrieren lässt.
Unser Fazit
Mit der Integration von Keycloak haben wir eine Authentifizierungsarchitektur geschaffen, die sowohl interne Sicherheit als auch externe Skalierbarkeit vereint. Dadurch kann unser System „Tedras“ nicht nur intern, sondern auch bei Kunden effizient eingesetzt werden, ohne neue Benutzerverwaltung oder komplexe IT-Freigaben.
Die Erfahrungen aus diesem Projekt zeigen, dass sich Open-Source-Lösungen wie Keycloak hervorragend in bestehende Cloud- und DevOps-Landschaften integrieren lassen.
Sie planen, externe Partner oder Kunden sicher in Ihr System einzubinden? Oder überlegen, wie Sie mehrere Login-Provider in einer bestehenden Architektur kombinieren können?
Sprechen Sie uns an – wir teilen gerne unsere Erfahrungen aus der Integration von Keycloak, Entra ID & Co.