Hauptmenü ausklappen

Identity- und Access-Management auf Basis von Keycloak

 

Keycloak ist eine Open-Source-Software von Red Hat, die eine zertifizierte Implementierung des OpenID-Connect-Protokolls darstellt. Mit Keycloak kann man relativ einfach und flexibel ein Identity- und Access-Management (IAM) für Applikationen bereitstellen, so dass nur ein einziger Identity Provider für mehrere Applikationen benötigt wird. Basierend auf JSON-Web-Token (JWT) kann man dann nach einer einmaligen Authentifizierung mit Single-Sign-On (SSO) auf alle Applikationen zugreifen.

Authentication Flow

Keycloak bietet weiterhin die Möglichkeit, auf die User-Daten – insbesondere auch auf die Passwörter – eines LDAP– oder AD-LDS-Servers zuzugreifen. Außerdem kann Keycloak auch Identity-Provider wie Facebook oder Google anschließen bzw. benutzen.

Die Anbindung einer Applikation als Keycloak-Client ist einfach und wird außerdem von Keycloak durch das Bereitstellen von passenden Adaptern (z.B. für JavaScript, AngularJS) unterstützt.

Durch die Quelloffenheit der Software kann man zudem die weitere Entwicklung von Keycloak mit Beiträgen zum GitHub-Repository beeinflussen.

 

Unsere Erfahrungen mit Keycloak

Wir haben Keycloak bisher in zwei Kundenprojekten eingesetzt, und zwar mit folgender Basis-Architektur:

Software Architektur

Keycloak bietet die Möglichkeit, mehrere verschiedene sogenannte “Realms” zu konfigurieren. Damit konnten wir zum einen die Keycloak-UI an das Layout des jeweiligen Clients anpassen. Das Realm beinhaltet weiterhin u.a. die Konfiguration für die Anbindung an AD-LDS und für die Keycloak-Clients.

Mithilfe von sog. “Token-Mappern” kann man bei der Keycloak-Client-Konfiguration festlegen, welche Attribute im Token an den Client übermittelt werden sollen. Das können beispielsweise auch Rollen, Zugriffsrechte und Berechtigungen sein.

In dem ersten Projekt, in dem wir Keycloak einsetzten, haben wir die Keycloak-Konfiguration an die Kundenanforderungen angepasst und außerdem ein kundeninternes REST-API (Create/Update/Search/Activate/Deactivate User) implementiert, das auf dem Admin-REST-API von Keycloak basiert.

In unserem aktuellen Projekt haben wir ein vorkonfiguriertes Keycloak-Docker-Image ausgeliefert, das über Environment-Variablen in der Gitlab-CI einfach an die jeweilige Kundenumgebung (Test-, Referenz- und Produktivsystem) angepasst werden kann. Keycloak basiert auf WildFly, so dass man zum einen die WildFly-Variablenersetzung nutzen kann, zum anderen kann man beim Hochfahren des Dockers über Realm-Templates oder die UI-Freemarker-Templates die gewünschte Konfiguration erzeugen. Die Konfiguration beinhaltet im Wesentlichen die Keycloak-Basis-Konfiguration, die UI-Konfiguration , die Konfiguration der DB- und AD-LDS-Anbindung, die Client-Konfigurationen sowie die Konfiguration der Mailserver- und Graylog-Anbindung.

 

Unser Fazit

Keycloak ist eine interessante, sichere und gut dokumentierte Alternative zu einer aufwendigen proprietären Eigenentwicklung eines IAM.

Keycloak als Docker-Container erlaubt eine flexible Anpassung der Konfiguration im Rahmen eines automatischen Deployment-Prozesses in der Gitlab-CI.

Weitere Kategorien:
  • Allgemein
  • Anwenderbericht
  • IT
Tags:
Access-ManagementErfahrungsberichtGitlab-CIIdentity-ManagementIdentity-ProviderITKeycloakKosten reduzieren
X