Impersonation von Benutzern mit Keycloak
Mit diesem Feature kann sich ein dazu berichtigter Benutzer als ein anderer Benutzer ausgeben. Kann auch User-Hijacking genannt werden.
Verwendung
In der Benutzerübersicht vom BPC steht ein Icon zur Verfügung, das die Impersonation auslöst. Nach klick auf eins dieser Icons wird man umgehend als dieser Benutzer angemeldet.
Konfiguration
Damit die Impersonation durchgeführt werden kann, müssen im Keycloak und im BPC Anpassungen durchgeführt werden.
Keycloak
Aktivierung des notwendigen Features
Das sogenannte Token Exchange Feature muss beim Start vom Keycloak über Java Opts aktiviert sein (-Dkeycloak.profile.feature.token_exchange=enabled
), andernfalls bekommt man beim Versuch ein User-Hijacking (= Impersonation) durchzuführen den Fehler "Feature not enabled".
In unserem zur Verfügung gestellten Keycloak Archive ist dies bereits über eine |
Rollen
Die Benutzer welche eine Impersonation durchführen sollen können, müssen die spezielle Rolle impersonation
besitzen.
Erkennung von Impersonation ermöglichen
Damit das BPC erkennen kann, dass ein Benutzer einen anderen Benutzer imitiert, muss die Weitergabe dieser Informationen am Client mittels Mapper gesetzt werden.
Dafür geht man im Keycloak auf den Client, den das BPC verwendet.
Unter Mappers
können diese mittels Add Builtin
hinzugefügt werden.
Es sind folgende Mapper hinzuzufügen:
-
Impersonator Username
-
Impersonator User ID
Wenn diese Mapper gesetzt sind, dann werden in der User Session Informationen abgelegt, wer den aktuellen Benutzer imitiert.
BPC
Durch klick auf das Icon im BPC wird Keycloak kontaktiert und die Impersonation angefordert. Danach muss das BPC neu geladen werden. Dazu ist es essentiell, dass im BPC die beiden Core Einstellungen Core_BaseURL
und Core_ClientPath
korrekt gesetzt sind. Aus diesen beiden Werten wird die URL erstellt welche danach vom BPC Frontend verwendet wird um die Seite neu zu laden.
Das BPC ist beispielsweise unter folgender URL erreichbar: https://bpc.virtimo.net/dev/support/3.4.x/
Dann müssen die beiden Settings auf folgende Werte gesetzt werden.
Einstellung | Wert |
---|---|
|
|
|
/dev/support/3.4.x/ |