Keycloak

Mithilfe des con terra Technologies Identity Service kann smart.finder SDI die Authentifizierung von Personen an Keycloak delegieren. Dies bedeutet, dass diese sich mit ihrem Keycloak-Account bei smart.finder SDI anmelden können.

Durch eine Verbindung mit Keycloak entstehen folgende Möglichkeiten:

  • Vergabe von Rollen für die Nutzung des Job Managers

  • Vergabe von Rollen für die Nutzung des Solr Admin Client

  • Vergabe von Rollen für die Einschränkung des Suchindexes für bestimmte Benutzer

Um smart.finder SDI mit Keycloak zu betreiben muss mindestens die Version 1.5.0 des con terra Technologies Identity Service verwendet werden.

Verbindung zwischen smart.finder SDI und Keycloak herstellen

Die Verbindung von smart.finder SDI mit Keycloak erfolgt in zwei Schritten.

Schritt 1: Identity Service installieren und konfigurieren

In diesem Schritt installieren und konfigurieren Sie den Identity Service als separate Web Anwendung. Folgen Sie dazu diesen Schritten aus der Dokumentation des Identity Service:

  1. Installieren Sie den Identity Service.

  2. Verbinden Sie den Identity Service mit Keycloak.

  3. Konfigurieren Sie Dienste, die mit einem Zugriffstoken angefragt werden sollen, als vertrauenswürdige Dienste im Identity Service.

Die vertrauenswürdigen Dienste des {product_name} sind die Endpunkte der Web-Anwendungen smartfinder-sdi, smartfinder-search und smartfinder-editor. Diese sind standardmäßig unter folgenden URLs erreichbar:

Diese werden über das Property security.oauth.tokenRules im Identity Service konfiguriert, z.B.:

# comma separated list of trusted services
security.oauth.tokenRules=https://www.example.com/smartfinder-sdi,https://www.example.com/smartfinder-search,https://www.example.com/smartfinder-editor

https://www.example.com muss entsprechend Ihrer Umgebung angepasst werden.

Wird smart.finder SDI in einer map.apps Instanz betrieben, so ersetzen Sie die URL https://www.example.com/smartfinder-sdi mit der URL der map.apps Instanz.

Schritt 2: smart.finder SDI konfigurieren

Um die Delegation der Anmeldung an den Identity Service zu aktivieren, setzen Sie die folgenden Parameter in der globalen Konfiguration:

security.mode=IDENTITY
security.login.base=https://www.example.com/identity

security.oauth.provider=keycloak
security.oauth.provider.url=https://www.example.com/keycloak
security.oauth.provider.keycloak.realm=ct
security.oauth.clientId=identity-service
security.oauth.clientSecret=abcdefg123456

Wenn der verwendete Identity Service auf einem anderen Host oder Port bereitgestellt wird als smart.finder SDI, muss folgendes Property zusätzlich im smart.finder SDI gesetzt werden.

# comma separated list of trusted services
cors.request.trustedServers=https://www.example.com/identity-service

https://www.example.com/identity-service ist als Beispiel der Basis-URL des Identity Service zu verstehen.

Die aufgelisteten Eigenschaften sollten in einer globalen application.properties-Datei (d.h. einer Konfigurationsdatei, die von mehreren Webapps gleichzeitig verwendet wird) eingetragen werden, da diese Eigenschaften von den Webapps mapapps bzw. smartfinder-sdi, smartfinder-search, smartfinder-editor und identity gemeinsam verwendet werden.

security.mode

Der Wert IDENTITY legt fest, dass die Authentifizierung über den Identity Service delegiert werden soll.

security.login.base

Basis URL des Identity Service.

security.oauth.provider

Die Art des Identity-Anbieters.

Der Wert für Keycloak ist keycloak.

security.oauth.provider.url

Basis-URL des Identity-Anbieters.

Beispiel: https://www.example.com/authn

security.oauth.provider.keycloak.realm

Der Name des Keycloak-Realm, für den Zugriffe erlaubt sind.

security.oauth.clientId

OAuth Client-ID, die im Rahmen der Registrierung des {product_name} am Identitätsanbieter vergeben wurde.

security.oauth.clientSecret

OAuth Client-Secret, das im Rahmen der Registrierung des {product_name} am Identitätsanbieter vergeben wurde.

cors.request.trustedServers

Liste von URLs zu Backenddiensten, für die die Übergabe von sicherheitskritischen Informationen mittels CORS aktiviert wird.

Dies ist beispielsweise bei Cookies und Autorisierung-Header der Fall.

Beispiel: https://example.com,https://example.net

Schritt 3: Client im Keycloak vorbereiten

Um Zugriff auf die Benutzer, Gruppen und Rollen in Keycloak zu ermöglichen, muss der verwendete Client mit einem speziellen Anmeldeverfahren und zusätzlichen Rechten ausgestattet werden.

Melden Sie sich hierfür als Administrator am Keycloak an. Gehen Sie dann wie folgt vor:

  1. Wählen Sie den Realm aus, in dem der Client registriert wurde.

  2. Klicken Sie auf Clients in der Navigation.

  3. Klicken Sie auf den Client in der tabellarischen Übersicht, der für den identity-service verwendet wird.

  4. Gehen Sie Tab Settings zum Abschnitt Capability config

  5. Aktivieren Sie Client authentication

  6. Aktivieren Sie Service accounts roles

  7. Klicken Sie auf Save

  8. Klicken Sie auf Service Account Roles in den Einstellungen des Clients

  9. Klicken Sie auf Assign Roles

  10. Wählen Sie im Filter-Drop-Down-Menü den Wert Filter by clients aus

  11. Wählen Sie die folgenden Rollen aus:

    1. (realm-management) view-users

    2. (realm-management) view-clients

  12. Klicken Sie auf Assign

Der Client identity-service ist nun vorbereitet.

Schritt 4: Benutzer, Gruppen und Rollen einrichten

Legen Sie nun die Benutzer, Gruppen und Rollen für smart.finder SDI an bzw. weisen Sie diese zu.

Neue Rollen können Sie in Keycloak folgendermaßen anlegen:

  1. Wählen Sie im Bereich Clients den Tab Clients list und klicken Sie auf den Client identity-service.

  2. Wählen Sie den Tab Roles und klicken Sie auf Create role.

  3. Fügen Sie nacheinander die für smart.finder SDI benötigten Rollen hinzu. Beachten Sie hierzu das rollenbasierte Rechtekonzept.

Die angelegten Rollen können Sie nun Benutzern und Gruppen zuweisen. Dies erfolgt in den Bereichen Users und Groups.

Bitte beachten Sie bei der Zuweisung von Gruppen, dass jeder Benutzer nur Mitglied einer einzigen Gruppe sein kann. Mitgliedschaften eines Benutzers in mehreren Gruppen werden von smart.finder SDI nicht unterstützt.

Eine detaillierte Anleitung zur Benutzerverwaltung in Keycloak finden Sie in der Keycloak-Dokumentation .