Keycloak anbinden und einrichten

Keycloak ist ein Identity Provider der zur Benutzer-Authentifizierung verwendet werden kann. Wenn die bereits unterstützen Identity Provider von der Funktionalität oder aus Sicherheitsbedenken nicht ausreichen sollten, dann ist dieser zu empfehlen. Auch, wenn die Inbetriebnahme ein wenig umfangreicher ist.

Voraussetzung

Sie haben Keycloak entsprechend der offiziellen Anleitung (https://www.keycloak.org/documentation) installiert und haben administrativen Zugriff auf Keycloak.

Sie sollten möglichst immer die neuste Version von Keycloak einsetzen, um Sicherheitsrisiken zu vermeiden.

Konfiguration Keycloak

Der Master-Realm im Keycloak sollte lediglich für die Verwaltung von Administratoren genutzt werden. Daher legen Sie bitte einen weiteren Realm an oder nutzen Sie einen bestehenden Realm, den Sie evtl. bereits für andere Anwendungen nutzen.

Client anlegen

Damit das BPC mit dem Keycloak kommunizieren kann, muss ein sogenannter Client angelegt werden.

  1. Stellen Sie sicher, dass Sie den richtigen Realm ausgewählt haben.

  2. Wählen Sie "Clients" auf der linken Seite

  3. Erzeugen Sie über "Create client" einen neuen Client

  4. Wählen Sie "OpenID Connect" als "Client type"

  5. Vergeben Sie als Client-ID "bpc-core"

  6. Aktivieren Sie "Client authentication". In älteren Keycloak-Versionen entspricht das dem Access-Type "confidential".

  7. Tragen Sie unter "Valid redirect URIs" die URL ihres BPCs ein. Z.B. "https://bpc.example.com/"

  8. Speichern Sie den Client

  9. Im Tab "Passwörter"(oder "Credentials") können Sie das Client secret einsehen (und auch ändern). Dieses benötigen Sie später für die Anbindung des BPC

BPC Rollen anlegen

  1. Wählen Sie "Realm-Rollen" auf der linken Seite

  2. Legen Sie über "Create role" die Rolle "bpcadmin" an.

BPC Administrator anlegen oder zuweisen

Damit ein Benutzer im BPC Administrator ist, benötigt er die Rolle "bpcadmin".

  1. Wählen Sie "Benutzer" auf der linken Seite

  2. Legen Sie über "Benutzer hinzufügen" einen neuen Benutzer an oder wählen Sie einen bestehdenden Benutzer aus

  3. Weisen Sie dem Benutzer die Rolle "bpcadmin" zu

Konfiguration BPC

Im BPC muss Keycloak unter den Backend Connections als Identity Provider angelegt und anschließend in den Core Services Einstellungen als zu verwendender Identity Provider festgelegt werden.

Beim initialen Start des BPC werden automatisch Backend Connections angelegt, die für den Keycloak genutzt werden können. Diese enthalten eine passende Platzhalter-Konfiguration und haben die Namen Keycloak und OIDC. Siehe auch Identity Provider Keycloak vs. OIDC

Identity Provider Keycloak vs. OIDC

Sie haben die Möglichkeit den Keycloak in zwei verschiedene Varianten (IdentityProvider oidc oder keycloak) anzubinden. In beiden Varianten erfolgt die eigentliche Authentifizierung über das OpenID Connect Protokoll. Wählen Sie "keycloak" muss zusätzlich ein Keycloak Admin-User hinterlegt werden. In diesem Fall können Benutzer aus dem BPC heraus administriert werden. In der reinen oidc Variante erfolgt die Benutzer Administration ausschließlich im Keycloak.

“Identity Provider” Backend Connection anlegen

  1. BPC Einstellungen → Backend Connections → Komponenten

  2. Unten auf den “+” Button klicken um eine neue Komponente anzulegen, als Typ “identity_provider” auswählen

Setting (Key) Gruppe Wert Beschreibung

Module_Name
(module_name)

module

z.B. "company-keycloak"

Einen sprechenden und eindeutigen Namen vergeben

IdentityProvider
(identityProvider)

config

keycloak oder oidc

Keycloak bzw. OIDC für die Backend Connection als IdP festlegen. Siehe auch Identity Provider Keycloak vs. OIDC

IdentityProvider_URL
(identityProvider.url)

config

https://localhost:8080/auth/realms/bpc/.well-known/openid-configuration

Der OpenID Endpunkt des Keycloak Servers

IdentityProvider_Configuration
(identityProvider_configuration)

config

{
  "client_id": "bpc-core",
  "scope": "openid profile email address phone bpc-rollen roles",
  "claim_name_roles": "bpc_client_roles,bpc_realm_roles",
  "client_secret": "8687ab26-830f-47ed-8ed1-6e62192ccd9c",
  "post_logout_redirect_uri": "http://localhost:8181",
  "post_authentication_redirect_uri": "http://localhost:8181/",
  "keycloak": {
    "realm": "bpc",
    "adminclient_realm": "master",
    "adminclient_client_id": "admin-cli",
    "adminclient_server_url": "http://localhost:8080/auth",
    "adminclient_username": "admin",
    "adminclient_password": "******"
  }
}

Die Konfiguration für den Keycloak Zugriff. Der Abschnitt unterhalb von keycloak ist nur nötig, wenn unter IdentityProvider keycloak ausgewählt ist (Siehe auch Identity Provider Keycloak vs. OIDC). Die URLs müssen hier entsprechend dem BPC und dem Keycloak angepasst werden. Unter client_secret ist das Client secret einzutragen, das bei Client anlegen ausgelesen wurde. Unter adminclient_username und adminclient_password müssen die Zugangsdaten eines Keycloak Administrators eingegeben werden, damit das BPC die Benutzer über die Keycloak API auslesen kann.


Keywords: