Keycloak Benutzerverwaltung
Keycloak ist ein externes System zur Nutzerverwaltung. Alle Nutzerinformationen inklusive der Passwörter werden in diesem System gespeichert. Keycloak bietet zudem die Möglichkeit, weitere Nutzerdatensysteme einzubinden, wie z. B. Microsoft Active Directory, Google oder Facebook. Moderne Sicherheitsmechanismen wie 2-Faktor-Authentifizierung oder Passkey lassen sich konfigurativ hinzufügen.
Damit kann Keycloak als sicheres zentrales Nutzerverwaltungssystem in der IT-Infrastruktur genutzt werden. Alle Virtimo Produkte bieten eine Integration von Keycloak an.
|
Für den produktiven Einsatz empfiehlt die Virtimo AG den Einsatz des Keycloak als zentralen Identity Provider. |
Installation
Der Keycloak-Server kann einfach mit dem INUBIT-Installer installiert werden. Dazu das Installations-Set "Keycloak" im Installer auswählen.
|
Es empfiehlt sich, den Keycloak auf einem separaten System zu installieren. Dieses System kann dann entsprechend der auf den Keycloak zugreifenden Systeme und Applikationen abgesichert werden. |
Konfiguration - Keycloak
Damit INUBIT Keycloak als Nutzerdatensystem integrieren kann, muss der Keycloak-Server für die zu verwaltenden INUBIT-Nutzer vorbereitet werden.
Voraussetzungen
-
Keycloak-Server ist installiert und gestartet
Ziele
-
Administrativen Keycloak-Account anlegen über den INUBIT sein Nutzer im Keycloak verwalten kann
-
Mindestens den INUBIT-Nutzer
rootim Keycloak anlegen, damit man sich mit der Workbench an der INUBIT Process Engine anmelden kann
Keycloak - Realm und Client
Nutzer werden in Keycloak in sogenannten Realms gebündelt. Dabei kann eine Applikation meist auf einen Realm zugreifen. Verschiedene Applikationen können auch gemeinsam auf ein- und denselben oder getrennte Realms zugreifen.
So gehen Sie vor
-
Richten Sie ein Administrator-Konto ein
-
Erstellen Sie einen neuen Realm
-
Realm-Einstellungen konfigurieren
-
Erstellen Sie drei Clients für die INUBIT-Komponenten und weisen Sie die gewünschten Client-IDs zu:
-
Process Engine (z.B.
inubit_process_engine) -
Workbench (z.B.
inubit_workbench) -
CLI (z.B.
inubit_cli)Die konfigurierten IDs müssen mit den unter
client-idsangegebenen Werten inkeycloak.jsonübereinstimmen.
-
-
Aktivieren Sie die erforderlichen Flows/Funktionalitäten für jeden Client:
-
Process Engine: Aktivieren Sie die Direct Access Grants
-
Workbench: Aktivieren Sie Standard Flow (Authentifizierung Code Flow)
-
CLI: Aktivieren Sie Standard Flow; optional auch Direct Access Grants für die Anmeldung ohne Browser (für Headless-Systeme)
-
-
Setzen Sie Client-Authentifizierung auf Off (öffentlicher Client, kein Client-Secret) und lassen Sie Authentifizierung deaktiviert.
Keycloak – Account and Rollen
INUBIT benötigt einen administrativen Keycloak-Account, um Nutzer anlegen, ändern und löschen zu können. Darüber hinaus kümmert sich INUBIT mit diesem Account auch um die Verwaltung der notwendigen Benutzergruppen.
|
Legen Sie 2 getrennte Accounts für den administrativen Zugang und den INUBIT-Nutzer |
Voraussetzungen
-
Realm und Client wurden im Keycloak angelegt
So gehen Sie vor
Administrativen Nutzer anlegen:
|
Vergeben Sie einen beliebigen Benutzernamen und ein starkes Passwort. |
-
Benutzer erstellen und folgende Rollen zuweisen
-
manage-users -
manage-clients -
manage-realm
-
INUBIT-Nutzer root anlegen:
|
Vergeben Sie den Benutzernamen |
-
Rolle erstellen:
System Administrator -
Benutzergruppe erstellen:
admin -
Benutzer erstellen:
rootmit RolleSystem Administratorin Gruppeadmin
Rolle erstellen
-
Gehen Sie zu Clients und wählen Sie den entsprechenden INUBIT-Client gemäß Ihrer Konfiguration aus (
client-idsinkeycloak.json, z.B.inubit_process_engine) -
Navigieren Sie zur Registerkarte Rollen
-
Klicken Sie Rolle erstellen
-
Benennen Sie die Rolle und klicken Sie Speichern
Benutzergruppe erstellen
-
Navigieren Sie zu Verwalten > Gruppen
-
Klicken Sie Gruppe erstellen
-
Geben Sie den Gruppennamen ein
-
Speichern Sie die Gruppe
Benutzer erstellen
-
Nutzer erstellen:
-
Navigieren Sie zu Benutzer und klicken Sie Benutzer hinzufügen
-
Erstellen Sie einen neuen Benutzer mit dem gewünschten Namen
-
-
Nutzergruppe zuweisen:
-
Klicken Sie Gruppen beitreten und wählen Sie die Gruppe aus
-
Klicken Sie Erstellen
-
-
Legen Sie ein starkes Passwort für diesen Benutzer fest
-
Weisen Sie dem Benutzer die notwendige Rolle zu:
-
Wählen Sie den Benutzer aus
-
Gehen Sie auf die Registerkarte Rollenzuweisungen
-
Klicken Sie Rollen zuweisen
Der Dialog "Assign roles to <Nutzername>" wird geöffnet.
-
Filtern Sie nach Clients und wählen Sie den Client aus, bei dem die Rolle existiert (z.B. der Process Engine Client).
-
Weisen Sie die gewünschte Rolle zu und klicken Sie auf Zuweisen
-
Konfiguration - INUBIT
Auf INUBIT-Seite muss die passende Keycloak-Konfiguration hinterlegt werden, sodass INUBIT mit dem Keycloak kommunizieren kann.
Voraussetzungen
-
Keycloak-Server ist installiert und gestartet
-
Clients wurden in Keycloak eingerichtet
-
Ein technischer Account wurde in Keycloak erstellt
-
Im Keycloak wurde ein root Nutzer-Account angelegt
-
INUBIT kann den Keycloak (über das Netzwerk) erreichen
|
Ab Version 9.0.0 ist
|
INUBIT - Keycloak als externen Identity Provider verwenden
Voraussetzungen
-
INUBIT Process Engine ist gestartet
-
Keycloak-Server ist gestartet
Gehen Sie wie folgt vor
-
Öffnen Sie die Datei
<inubit-installdir>/inubit/server/ibis_root/conf/ibis.xml -
Setzen Sie den zu nutzenden Identity Provider auf
keycloak:<Property name="IdentityProvider">keycloak</Property> -
Setzen Sie den Pfad Keycloak JSON-Datei:
<Property name="IdentityProviderConfiguration">keycloak.json</Property> -
Speichern Sie die Änderungen in der Datei
ibis.xml -
Öffnen Sie die Datei
<inubit-installdir>/inubit/server/ibis_root/conf/keycloak_template.jsonund konfigurieren Sie sie je nach den Details im Abschnitt der Dokumentation. -
Speichern Sie alle Änderungen in der Datei
keycloak.json -
Starten Sie die INUBIT Process Engine
-
Starten Sie die INUBIT Workbench
-
Loggen Sie sich mit dem
rootNutzer ein
|
Kanonische Keycloak-URL und Erreichbarkeit
Der Wert von auth-server-url in der keycloak.json muss eine einzelne, kanonische Keycloak-URL sein, die sowohl von der Process Engine als auch von den Client-Anwendungen (Workbench, CLI) erreichbar ist.
Alle Komponenten müssen denselben Hostnamen und dasselbe Schema für Keycloak verwenden; die Verwendung verschiedener Hostnamen oder roher IP-Adressen kann zu Issuer-Fehlern und Problemen bei der Token-Validierung führen.
Wenn der direkte Zugriff unterschiedliche Netzwerkpfade erfordert (zum Beispiel, die Process Engine kommuniziert mit Keycloak über eine private IP, während externe Clients über das öffentliche Internet darauf zugreifen), verwenden Sie DNS, um einen einzigen kanonischen Hostnamen beizubehalten. In solchen Fällen konfigurieren Sie ein Split-Horizon (Split-View) DNS, sodass der kanonische Keycloak-Hostname im privaten Netzwerk auf eine interne IP und für externe Clients auf eine öffentliche IP aufgelöst wird. Dies hält den internen Datenverkehr lokal, während ein konsistenter Issuer und Discovery-Endpunkt für alle Parteien erhalten bleibt.
Verwenden Sie nach Möglichkeit DNS-Namen statt IP-Adressen.
Überlegungen zur Token-Lebensdauer
Token Lifetimes bestimmen, wie oft sich Benutzer erneut anmelden müssen. Kurze Lifetimes können zu häufigen Anmeldungen führen, besonders nach Standby-Phasen, wenn Zugriffs- oder Refresh-Tokens abgelaufen sind. Die Lifetimes können auf Realm- oder Client-Ebene in den Session-Einstellungen konfiguriert werden: Wichtige Parameter sind Client Session Idle, Client Session Max und SSO Session Max. Das Auswählen geeigneter Werte kann den Benutzerkomfort verbessern, ohne die Sicherheit wesentlich zu beeinträchtigen.
Überlegungen zur Sitzungslebensdauer
Mit INUBIT Version 9.0 ist die Benutzerinteraktion zwischen der Workbench und der Process Engine sessionbasiert, wenn Keycloak als Identity Provider verwendet wird. Jede Session hat eine begrenzte Lebensdauer und kann ablaufen. Wenn ein Benutzer über eine längere Dauer inaktiv bleibt, erscheint ein Pop-up in der Workbench, das ihn auffordert, sich wieder anzumelden.
Dieses Verhalten hängt von der Gültigkeitsdauer des Tokens ab, das von Keycloak ausgestellt wird. Als Keycloak-Administrator kann die Gültigkeitsdauer des Tokens in den Keycloak-Realm-Einstellungen angepasst werden.
Automatisches Session Refresh
Das von Keycloak ausgestellte Token wird standardmäßig mit einem Refresh-Token gesendet. Dieses Refresh-Token wird von der Workbench benutzt, um ein abgelaufenes Token automatisch zu erneuern, ohne Benutzerinteraktion. Ein Benutzer muss sich nur dann anmelden, wenn der Refresh-Token auch abgelaufen ist.
Es wird empfohlen, die Ausstellung der Refresh-Tokens zu aktivieren.