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 root im 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

  1. Richten Sie ein Administrator-Konto ein

  2. Erstellen Sie einen neuen Realm

  3. Realm-Einstellungen konfigurieren

  4. 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-ids angegebenen Werten in keycloak.json übereinstimmen.

  5. 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)

  6. 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 root an.

Voraussetzungen

So gehen Sie vor

Administrativen Nutzer anlegen:

Vergeben Sie einen beliebigen Benutzernamen und ein starkes Passwort.

  1. Benutzer erstellen und folgende Rollen zuweisen

    • manage-users

    • manage-clients

    • manage-realm

INUBIT-Nutzer root anlegen:

Vergeben Sie den Benutzernamen root und ein starkes Passwort.

  1. Rolle erstellen: System Administrator

  2. Benutzergruppe erstellen: admin

  3. Benutzer erstellen: root mit Rolle System Administrator in Gruppe admin

Rolle erstellen

  1. Gehen Sie zu Clients und wählen Sie den entsprechenden INUBIT-Client gemäß Ihrer Konfiguration aus (client-ids in keycloak.json, z.B. inubit_process_engine)

  2. Navigieren Sie zur Registerkarte Rollen

  3. Klicken Sie Rolle erstellen

  4. Benennen Sie die Rolle und klicken Sie Speichern

Benutzergruppe erstellen

  1. Navigieren Sie zu Verwalten > Gruppen

  2. Klicken Sie Gruppe erstellen

  3. Geben Sie den Gruppennamen ein

  4. Speichern Sie die Gruppe

Benutzer erstellen

  1. Nutzer erstellen:

    1. Navigieren Sie zu Benutzer und klicken Sie Benutzer hinzufügen

    2. Erstellen Sie einen neuen Benutzer mit dem gewünschten Namen

  2. Nutzergruppe zuweisen:

    1. Klicken Sie Gruppen beitreten und wählen Sie die Gruppe aus

    2. Klicken Sie Erstellen

  3. Legen Sie ein starkes Passwort für diesen Benutzer fest

  4. Weisen Sie dem Benutzer die notwendige Rolle zu:

    1. Wählen Sie den Benutzer aus

    2. Gehen Sie auf die Registerkarte Rollenzuweisungen

    3. Klicken Sie Rollen zuweisen

      Der Dialog "Assign roles to <Nutzername>" wird geöffnet.

    4. Filtern Sie nach Clients und wählen Sie den Client aus, bei dem die Rolle existiert (z.B. der Process Engine Client).

    5. 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

Ab Version 9.0.0 ist keycloak der Standardwert für die Eigenschaft IdentityProvider in der ibis.xml Datei.

inubit kann alternativ als Identity Provider verwendet werden. Diese Option ist veraltet und dient der Abwärtskompatibilität. Es wird dringend empfohlen, stattdessen Keycloak zu verwenden.

INUBIT - Keycloak als externen Identity Provider verwenden

Voraussetzungen

  • INUBIT Process Engine ist gestartet

  • Keycloak-Server ist gestartet

Gehen Sie wie folgt vor

  1. Öffnen Sie die Datei <inubit-installdir>/inubit/server/ibis_root/conf/ibis.xml

  2. Setzen Sie den zu nutzenden Identity Provider auf keycloak:

    <Property name="IdentityProvider">keycloak</Property>
  3. Setzen Sie den Pfad Keycloak JSON-Datei:

    <Property name="IdentityProviderConfiguration">keycloak.json</Property>
  4. Speichern Sie die Änderungen in der Datei ibis.xml

  5. Öffnen Sie die Datei <inubit-installdir>/inubit/server/ibis_root/conf/keycloak_template.json und konfigurieren Sie sie je nach den Details im Abschnitt der Dokumentation.

  6. Speichern Sie alle Änderungen in der Datei keycloak.json

  7. Starten Sie die INUBIT Process Engine

  8. Starten Sie die INUBIT Workbench

  9. Loggen Sie sich mit dem root Nutzer ein

  • admin-group-priority: Wenn admin-group-priority true ist, wird die admin -Gruppe immer als primäre Gruppe festgelegt, sofern der Benutzer Mitglied dieser Gruppe ist.

  • Benutzername/Passwort: Kann leer gelassen werden, wenn stattdessen die Umgebungsvariablen INUBIT_PE_KEYCLOAK_USERNAME und INUBIT_PE_KEYCLOAK_PASSWORD gesetzt sind. Das Speichern im Klartext wird aus Gründen der Abwärtskompatibilität weiterhin unterstützt, wird aber in Zukunft entfernt werden.

  • client-ids: Ermöglicht separate Client-IDs für Process Engine, Workbench und CLI. Die Standardwerte werden im Beispiel gezeigt. Dadurch können mehrere separate INUBIT-Umgebungen im selben Keycloak-Realm zu betreiben, indem verschiedene Client-IDs verwendet werden.

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.