Wenn Keycloak als Identity Broker fungiert und die Authentifizierung an einen externen IDP weiterleitet, stellt sich die Frage: Warum sollte man die Nutzer mit Keycloak synchronisieren, wenn Keycloak ohnehin bei der ersten Anmeldung automatisch ein Konto erstellen kann? Falls du noch nicht genau weißt, was ein Identity Broker ist, schau doch mal in unseren Blogbeitrag Keycloak als Identity Broker: Eine Einführung. In diesem Beitrag wird untersucht, ob und wann eine Synchronisation der Nutzer sinnvoll ist..
Mechanismen zur Nutzerverwaltung
Es gibt zwei wesentliche Methoden zur Verwaltung von Nutzerkonten in Keycloak, wenn es als Broker agiert:
Dynamische Nutzeranlage bei Anmeldung
Falls keine Synchronisation stattfindet, wird ein Nutzerkonto in Keycloak erst bei der ersten Anmeldung angelegt. Der Ablauf sieht wie folgt aus:
- Der Nutzer versucht, sich bei einer Anwendung anzumelden und wird an Keycloak weitergeleitet.
- Abhängig von bestimmten Kriterien, wie der E-Mail-Domain, wird der Nutzer an den entsprechenden IDP weitergeleitet.
- Nach erfolgreicher Authentifizierung gibt der IDP ein ID-Token aus und sendet es an Keycloak.
- Keycloak überprüft das Token und erstellt ein Nutzerkonto mit den Basisinformationen (z. B. Name, E-Mail-Adresse).
Synchronisierte Nutzerverwaltung
Durch eine regelmäßige Synchronisation kann eine konsistente Nutzerbasis sichergestellt werden. Dabei werden alle Nutzerkonten aus dem externen IDP nach Keycloak übertragen und kontinuierlich aktualisiert.
Ablauf der synchronisierten Anmeldung:
- Ein Nutzer versucht, sich bei einer Anwendung anzumelden und wird an Keycloak weitergeleitet.
- Keycloak überprüft das Token des externen IDPs und vergleicht den Nutzer mit den synchronisierten Daten.
- Falls der Nutzer nicht existiert (weil keine Synchronisation stattgefunden hat), wird die Anmeldung abgelehnt.
Gegenüberstellung: Vor- und Nachteile
| Kriterium | Dynamische Nutzeranlage | Synchronisierte Nutzerverwaltung |
| Nutzerbestand | Wird erst bei der ersten Anmeldung angelegt | Alle Nutzer sind bereits vorher vorhanden |
| Berechtigungsverwaltung | Eingeschränkt, da Rechte erst nach Anmeldung zugewiesen werden können | Vollständig, da Berechtigungen vorab definiert werden können |
| Nutzerlöschung | Keine automatische Deaktivierung, da gesperrte Nutzer im externen IDP in Keycloak weiter existieren | Automatische Sperrung oder Löschung durch Synchronisation mit dem IDP |
| Administrativer Aufwand | Gering, da keine externe Synchronisation erforderlich ist | Höher, da eine Synchronisationslösung implementiert und gewartet werden muss |
| Technische Herausforderungen | Keine besonderen Anforderungen | LDAP ist der einzige konfigurative Synchronisationsmechanismus. Falls dieser nicht genutzt werden kann, muss eine individuelle Lösung entwickelt werden. |
Empfehlung
Im Unternehmenskontext ist eine regelmäßige Synchronisation der Nutzerkonten mit dem externen IDP meist die bessere Wahl. Der Grund dafür ist, dass eine zentrale Verwaltung und Kontrolle über alle Nutzer essentiell für Sicherheit und Compliance ist. Ohne Synchronisation können ehemalige Mitarbeitende oder gesperrte Konten weiterhin in Keycloak existieren, was ein Sicherheitsrisiko darstellen kann. Zudem ermöglicht eine Synchronisation die frühzeitige Zuweisung von Berechtigungen, was die Verwaltung und den Zugriff auf Systeme optimiert.
Während die dynamische Nutzeranlage für kleinere Anwendungen oder weniger kritische Systeme eine praktikable Option sein kann, ist eine Synchronisation für größere Organisationen mit komplexen Berechtigungsstrukturen und strengen Sicherheitsanforderungen unverzichtbar. Eine frühzeitige Einführung einer synchronisierten Nutzerbasis verhindert spätere Anpassungsaufwände und erleichtert den Übergang zu zukünftigen Standardlösungen.
Weiterführende Informationen zur Nutzersynchronisation
Falls du dich entscheidest, eine Nutzersynchronisation umzusetzen, findest du im Blogartikel Nutzer-Synchronisation zwischen Entra ID und Keycloak: Python-Skript vs. SCIM eine detaillierte Gegenüberstellung zweier Ansätze. Dort werden sowohl die Synchronisation per Python-Skript als auch die Nutzung eines SCIM-Plugins beschrieben, inklusive ihrer Vor- und Nachteile.
