# #

Keycloak
Ein Überblick

Einleitung

Keycloak ist eine IAM-Software, die kostenlos und als Open Source zur Verfügung steht. Das Projekt existiert seit 2013. Beobachtet man die Fachpresse, so stellt man fest, dass Keycloak seit etwa 2015 immer populärer wird. Keycloak bietet viele Features out-of-the-box – ohne dass dafür programmiert werden muss. Im einfachsten Fall kann man Keycloak inkl. Application-Server herunterladen, sofort starten und konfigurativ auf seine Bedürfnisse anpassen. Natürlich ist es auch möglich, sich über die vielen Erweiterungspunkte in Keycloak einzuklinken, um so mithilfe der Programmierung Einfluss auf das Verhalten von Keycloak zu nehmen oder Funktionsergänzungen durchzuführen. Wer Support benötigt, für den ist die kommerzielle Variante „Red Hat Single Sign-on“ eine Option. Keycloak wird unter der Lizenz „Apache License 2.0“ veröffentlicht. Diese Lizenz muss für unveränderte Teile der Software weiter mitgeliefert werden; für geänderte Teile kann man selbst eine Lizenz wählen – auch eine kommerzielle Verwertung ist hierbei nicht ausgeschlossen. Technisch setzt Keycloak auf Java-Technologien. Für den Betrieb wird minimal JDK 8 vorausgesetzt. In der aktuellen Version 9 läuft Keycloak im ebenfalls als Open Source verfügbaren Application-Server Wildfly 18.

Features

Keycloak bringt von Haus aus eine Menge an Features mit, die im Folgenden jeweils kurz beleuchtet werden.

 

Single Sign-on und Single Sign-out

 

Möchte ein Benutzer mehrere Applikationen oder Dienste verwenden, so muss er sich in der Regel bei jeder Applikation separat einloggen. Beim Single Sign-on (SSO) geht es darum, dass sich der Benutzer nur einmal (beim ersten Zugriff auf eine der Applikationen) authentisieren muss. Dies geschieht dadurch, dass die Applikation den Benutzer auf eine zentrale Keycloak-Instanz weiterleitet, welche die Login-Maske für die angesprochene Applikation ausgibt und in der Folge die Authentifizierung durchführt. Nach erfolgreicher Anmeldung wird der Benutzer zur Applikation weitergeleitet. Verwendet der gleiche Benutzer anschließend andere Software-Systeme im SSO-Verbund, dann weiß Keycloak, dass der Benutzer bereits authentifiziert ist und fordert keine weitere Anmeldung mehr. Zusätzlich verfügt Keycloak auch über eine Kerberos-Bridge, sodass die Anmeldung am Arbeitsrechner für die Authentifizierung ausreicht. Ebenso unterstützt Keycloak auch ein Single Sign-out: Meldet sich der Benutzer ab, dann wird er automatisch aus allen Applikationen im SSO-Verbund ausgeloggt.

 

 

 

Standardprotokolle

Keycloak unterstützt Standardprotokolle wie OAuth 2.0 (nur Autorisierung) und das darauf basierende OpenID Connect (Autorisierung und Authentifizierung). Daneben wird mit SAML 2.0 ein weiteres Standardprotokoll unterstützt, welches ähnliche Anforderungen wie OpenID Connect (OIDC) abdeckt. Im Gegensatz zu OIDC existiert SAML jedoch schon länger, basiert auf XML und setzt zum Erreichen von Integrität und Vertraulichkeit keine SSL-basierte Kommunikation voraus, sondern setzt stattdessen auf digitale Signaturen und Verschlüsselung.

Self-Service-Portal für Benutzer (Account Management Console)

 

Ein Self-Service-Portal ermöglicht es Benutzern, ihre Daten jederzeit selbst zu verwalten. Keycloak bietet ein solches Portal unter dem Namen „Account Management Console“ an. So kann der Benutzer z. B. Passwortänderungen selbständig durchführen, ohne von einem Administrator abhängig zu sein. Darüber hinaus bietet ihm das Portal eine Übersicht über alle Applikationen, die er verwenden kann – nebst den Rollen, mit denen er ausgestattet ist. Eine weitere Übersicht zeigt, in welchen Applikationen aktuell Sitzungen offen sind (inkl. Sitzungsmetadaten wie z. B. Start- und Ablaufdatum sowie Datum/Uhrzeit des letzten Zugriffs). Ist das Konto im Kontext von Social Logins mit anderen Diensten wie z. B. Google verknüpft, dann wird zusätzlich eine Seite zur Verwaltung föderierter Identitäten sichtbar. Abgerundet wird das Self-Service-Portal durch die Option, eine Mehrfaktorauthentifizierung einzurichten. So kann der Benutzer seine Logins z. B. zusätzlich mittels One-Time-Pads (OTP) absichern. Dafür benötigt er ein Smartphone und eine App, die QR-Codes lesen und auf dieser Basis OTPs generieren kann. Aktuell unterstützt Keycloak zu diesem Zweck die Mobile Apps FreeOTP und Google Authenticator.

 

Zentrales Management für Administratoren (Admin Console)

 

Ein wichtiger Aspekt ist die Möglichkeit zur Konfiguration einer Keycloak-Instanz über ein zentrales webbasiertes Interface. Diese wird in Keycloak „Admin Console“ genannt. Darüber hinaus ermöglicht die Admin Console die Verwaltung zentraler Entitäten wie z. B. Benutzer und Rollen. Die Admin Console umfasst zusammengefasst im Wesentlichen

  • die Konfiguration von

o   Realms (jeweils abgegrenzte Bereiche, für die die anderen in dieser Aufzählung genannten Aspekte einzeln konfiguriert bzw. verwaltet werden können)

o   Clients (Applikationen und Dienste)

o   Benutzerdatenquellen (siehe User Federation)

o   weiteren Identity Providern (siehe Identity Brokering und Social Login)

  • die Verwaltung von

o   lokal in Keycloak angelegten Benutzern

o   Benutzern aus anderen Datenquellen

o   Benutzergruppen

o   Rollen

User Federation

 

Neben den lokal in Keycloak verwalteten Benutzern unterstützt Keycloak auch die Anbindung externer Benutzerdatenquellen. Somit können auch bereits vorhandene Datentöpfe, die Benutzerdaten enthalten, genutzt werden. Keycloak bietet beim Zugriff auf solch föderierte Datenquellen standardmäßig User Storage Provider für LDAP oder Active Directory an. Andere Arten von Datenquellen, wie z. B. relationale DBMS, können durch Implementierung eines eigenen Providers für das User Storage SPI (Service Programming Interface) angebunden werden.

 

In der Regel ist nur ein Ausschnitt an Attributen aus externen Benutzerdaten für Keycloak relevant. Hierfür kann in Keycloak ein Mapping angegeben werden. Passwörter verbleiben immer im Provider. Authentifizierungsanfragen werden daher immer an die eingebundenen User Storage Provider weitergegeben. Bei der Authentifizierung sucht Keycloak den Benutzer immer zuerst in der lokalen Datenbank. Wird er hier nicht gefunden, dann werden die einzelnen User Storage Provider in der konfigurierten Reihenfolge angesprochen.

 

 

Identity Brokering und Social Login

 

Ein Identity Provider (IdP) ist ein Dienst, welcher Benutzer authentifiziert. Keycloak kann auch als Identity Broker agieren und Authentifizierungsanfragen an externe IdPs delegieren. Hierbei werden Standardprotokolle wie z. B. OIDC oder SAML benutzt. Social Logins sind in Keycloak vorkonfigurierte bekannte IdP-Dienste wie z. B. Facebook, Google, Twitter u. v. m. Auf diese Weise kann man zulassen, dass sich Benutzer mit ihren Accounts externer Dienste registrieren bzw. einloggen.

 

Themes

 

Keycloak stellt für verschieden Prozesse, die im Rahmen eines Identity- und Access-Managements benötigt werden, entsprechende Eingabemasken zur Verfügung. Dazu gehören beispielsweise die Masken für den Registrierungsprozess sowie die Login-Maske; aber auch die Benutzungsoberflächen der Account Management Console oder der Admin Console. All diese Bereiche können mittels Themes optisch angepasst werden. Für jeden Client kann bei Bedarf ein eigenes Theme zum Einsatz kommen. Dies ist beispielsweise für die nahtlose Integration von Legacy-Anwendungen interessant. Technisch basieren die Themes auf FreeMarker-Templates.

 

Client-Adapter

 

Clients kommunizieren über die angebotenen Standardprotokolle mit Keycloak. Damit diese Kommunikation nicht für jeden Client – evtl. sogar redundant – selbst implementiert werden muss, gibt es für eine Vielzahl an Technologien und Frameworks fertige Client-Adapter, die sich einfach in die eigene Anwendung integrieren lassen und die Kommunikation mit Keycloak übernehmen. Beispielsweise existiert für Spring-basierte Java-Anwendungen ein eigener Spring Boot Starter für Keycloak. Der Adapter muss dann nur noch mit einer JSON-Datei konfiguriert werden. Da ohnehin eine zugehörige Client-Konfiguration in Keycloak hinterlegt sein muss, kann man sich diese als Vorlage in Form einer entsprechenden JSON-Konfigurationsdatei aus der Admin Console herunterladen.

 

Clustering für Skalierbarkeit und Hochverfügbarkeit

 

Da Keycloak als IAM-System eine zentrale Komponente in der IT-Infrastruktur darstellt, ist es einer hohen Anzahl an Anfragen ausgesetzt. Damit stellt sich auch die Frage nach der Skalierbarkeit und Hochverfügbarkeit. Keycloak kann im Cluster betrieben werden. Auf technischer Ebene bilden JGroups und Infinispan das Rückgrat. JGroups ist ein Toolkit für die zuverlässige Kommunikation zwischen Clustern und Nodes während Infinispan als verteilter In-Memory-Cache für die Replizierung von Änderungen an Usern, Sessions, Realms etc. in Richtung aller Keycloak-Instanzen im Cluster verantwortlich ist.

 

Erweiterbarkeit

 

Keycloak bietet eine große Anzahl an Anknüpfungspunkten, über die sich neue Funktionalität anbinden oder bestehendes Verhalten abändern lässt. Welche Möglichkeiten im Detail geboten werden, klärt ein Blick in die Dokumentationen der SPIs. Ein weiterer wichtiger Aspekt im Zusammenhang mit der Anpassbarkeit und Erweiterbarkeit von Keycloak ist der eingesetzte Technologie-Stack. Da Keycloak auf Frameworks und Technologien setzt, die weithin bekannt sind und sich in der Entwicklergemeinde etabliert haben, finden sich auch leicht Entwickler, die in der Lage sind, Customizings durchzuführen.

 

Fazit

Keycloak deckt aktuell bereits viele Standardanforderungen an ein IAM-System ab und lässt sich umfangreich konfigurieren. Erweiterungsmöglichkeiten sind an vielen Stellen gegeben. Die Dokumentation ist sehr detailliert. Da sich das System einer hohen Beliebtheit erfreut, finden sich auch viele Informationen und Lösungsansätze zu bekannten Herausforderungen im Netz. Die Installation und Inbetriebnahme ist in mehreren Varianten möglich (z. B. mittels Docker-Containern), sehr einfach durchzuführen und lädt zum Experimentieren mit der Software ein. Ein nicht zu unterschätzender Aspekt ist zudem die lebendige Entwickler-Community, die einerseits für einen hohen Sicherheitsstandard sorgt und andererseits eine kontinuierliche Weiterentwicklung der Software sicherstellt. Patch-Versionen werden gewöhnlich in regelmäßigen Intervallen von wenigen Wochen veröffentlicht.

Interesse geweckt?

Hier können Sie die Präsentation herunterladen.


Von der Idee bis zur fertigen Lösung: Die W3L ist Ihr Digitalisierungspartner.

Lernen Sie uns kennen. Tel.: 0231 / 61 804-0