Keycloak-SSO mit Docker Compose und Nginx
(du.nkel.dev)Keycloak-SSO einrichten: Docker Compose und Nginx verwenden
- Keycloak ist Open Source und eine zuverlässige Identity- und Access-Management-Lösung, die mit den wichtigsten SSO-Protokollen kompatibel ist.
- Die Einrichtung mit Docker Compose ist nicht kompliziert, aber nicht intuitiv, daher wird der Konfigurationsprozess zusammengefasst dargestellt.
Konzept
- Verwendet wird ein Standard-Setup, bei dem Nginx als zentraler Reverse Proxy dient und den Traffic über localhost an einzelne Services weiterleitet.
- Dies gilt als kostengünstiges Setup, das Umgebungen möglichst gut isoliert, während die Ressourcen eines einzelnen Hosts gemeinsam genutzt werden.
Voraussetzungen
- Benötigt werden grundlegende Werkzeuge (SSH, eine VM mit installiertem Linux, eine Domain oder Subdomain).
- Für ein Rootless-Docker-Setup wird ein neuer passwortloser Non-Root-Benutzer
keycloakerstellt, die Bereiche in/etc/subuidund/etc/subgidwerden aktualisiert, Rootless Docker wird installiert und der automatische Start des Dienstes konfiguriert.
Keycloak-Konfiguration
- Man meldet sich als neu erstellter Benutzer
keycloakan und erstellt Verzeichnisse für persistente Daten und Docker-Dateien. - Unter Bezug auf die offizielle Dokumentation wird eine
docker-compose.ymlerstellt, und in der Datei.envwerden sensible und veränderliche Informationen eingetragen.
Lokal testen
- Der Docker-Compose-Stack wird getestet, ein Reverse-SSH-Tunnel zur VM erstellt und anschließend im Browser der Keycloak-Willkommensbildschirm geprüft.
Nginx-Konfiguration
- Nginx wird als systemweiter Reverse Proxy eingerichtet und eine neue Nginx-
.conf-Datei für den Keycloak-Service erstellt. - Beim Domain-Registrar wird ein A-Record hinzugefügt, damit DNS-Anfragen an die IP der VM weitergeleitet werden.
Debugging
- Man öffnet
.tld.com, meldet sich bei Keycloak als Admin-Benutzer an und prüft die Docker-Compose-Logs sowie die Access- und Error-Logs von Nginx. - Falls nötig, wird auch die Keycloak-Datenbank überprüft.
Benutzerdefinierter Build mit Dockerfile
- Statt das vorgefertigte Image von quay.io zu verwenden, wird mit einem Dockerfile ein eigenes Image gebaut.
- Docker Compose wird neu gestartet, um das Image zu bauen und den Service zu starten.
Fazit
- Der Keycloak-Service läuft hinter einem systemweiten Nginx-Reverse-Proxy mit Rootless Docker.
- Nächste Schritte sind automatische Updates für Docker-Container, das Hinzufügen von Login und E-Mail für den Keycloak-Service, das Hinzufügen von Realms sowie das Hinzufügen von Themes.
GN⁺-Meinung:
- Wichtigkeit von Sicherheit: Der aktuelle Zustand des Webs macht es schwer, mit sicherheitsrelevanten Schwachstellen Schritt zu halten, daher ist es wichtig, eine zuverlässige Lösung wie Keycloak zu verwenden.
- Effiziente Architektur: Die gemeinsame Nutzung von Ressourcen auf einem einzelnen Host bei gleichzeitiger Isolierung der Umgebungen ist kosteneffizient und leicht zu verwalten.
- Anpassbarkeit: Ein benutzerdefinierter Build mit Dockerfile bietet die Flexibilität, Keycloak an die eigenen Anforderungen anzupassen.
1 Kommentare
Hacker-News-Kommentare
Meinung eines Nutzers, der sich für Authelia entschieden hat:
Meinung eines Nutzers mit Erfahrung mit JetBrains Hub und Keycloak, der sich für Dex entschieden hat:
latest-Tags für das Docker-Image ist aber unpraktisch.Meinung eines Nutzers, der eine Vergleichstabelle für OpenID-Connect-Server erstellt hat:
Meinung eines Nutzers zu Sicherheitsproblemen bei Keycloak:
Meinung eines Nutzers, der Erfahrungen mit einer Keycloak-Implementierung auf AWS ECS geteilt hat:
Meinung eines Nutzers mit einer positiven Erwähnung von Keycloakify:
Meinung eines Nutzers, der Authelia und Keycloak verglichen hat:
Meinung eines Nutzers, der seine Erfahrungen mit Keycloak geteilt hat:
Meinung eines Nutzers, der Zitadel ausprobiert hat:
Meinung eines Nutzers, der die Schwierigkeiten bei der Nutzung von Keycloak geschildert hat: