Keycloak als Identity Provider
Identity Provider wie Keycloak können mittels OpenID Connect/OAuth2 über einen Reverse Proxy wie OpenResty zur Authentifizierung an enaio® gateway angebunden werden.
Installation und Konfiguration von Keycloak für ein solches Szenario sind hier in Grundzügen beschreiben.
Keycloak muss aus Sicherheits- und Wartungsgründen auf einem eigenen Server installiert werden.
Keycloak-Installation
Die Installation erfolgt mit folgenden Schritten:
- Download der aktuellen Version unter https://www.keycloak.org/downloads und entpacken in ein Verzeichnis.
- Anpassen der Konfigurationsdatei standalone.xml aus dem Verzeichnis \standalone\configuration\:
-
<interface name="any">
<any-address/>
</interface> -
Im Abschnitt <socket-binding-group> für das Attribut <default-interface> folgenden Wert eintragen: any
-
Falls der Port 8080 nicht frei ist: Im Abschnitt <socket-binding-group> den Port über folgende Zeile ändern:
<socket-binding name="http" port="${jboss.http.port:8080}"/>
-
Starten von Keycloak über die Datei \keycloak\bin\standalone.bat.
Die Datei muss als Administrator ausgeführt werden.
-
Die Keycloak Admin Console aufrufen: http://localhost:8080/
-
Initial ein Administrationskonto anlegen.
Ergänzen des Abschnitts <interfaces> um folgenden Eintrag:
Für den produktiven Einsatz wird empfohlen, Keycloak an ein anderes Relational Database Management System (RDBMS) anzubinden als an das standardmäßig eingebettete H2. Kompatible RDBMS werden von Keycloak empfohlen.
Keycloak: Mandant und Benutzer
Sie benötigen einen Mandanten und Benutzer.
Benutzer in Keycloak müssen ebenfalls in der enaio®-Benutzerverwaltung eingetragen sein.
Mandanten und Benutzer legen Sie mit folgenden Schritten an:
-
Die Keycloak Admin Console aufrufen: http://localhost:8080/auth/admin
-
Im Navigationsbereich über Master > Add realm einen neuen Mandanten anlegen.
-
Für den Mandanten über Users > Add user einen Benutzer anlegen und speichern.
-
Über die Benutzer-Seite auf dem Tab Credentials ein Password angeben, die Option Temporary auf Off stellen und über Set Password speichern.
Keycloak: Anbindung an OpenResty
Für die Anbindung legen Sie einen Client mit folgenden Schritten an:
-
Die Keycloak Admin Console aufrufen: http://localhost:8080/auth/admin
-
Den Mandaten auswählen und über Clients > Create einen neuen Client anlegen.
-
Eine Bezeichnung in der Feld Client ID eingeben, in das Feld Root URL die URL von OpenResty eintragen und speichern.
-
Über die Client-Seite auf dem Tab Settings folgendes einstellen:
-
Access Type > confidential
-
Authorization Enabled > ON
-
Valid Redirect URIs > Muster: http://<OpenResty>/*
Alle zu OpenResty führenden Basis-URLs müssen nach diesem Muster angegeben werden. Zusätzlich muss angegeben werden: http://127.0.0.1:*
-
-
Konfiguration über Save speichern.
Für die Konfiguration von OpenResty benötigen Sie folgende Daten:
- Die Client ID
- Das Secret, es wird auf der Client-Seite auf dem Tab Credentials angezeigt.
- Über Realm Settings auf dem Tab General im Feld Endpoints auf OpenID Endpoint Configuration klicken. Die URL, angepasst an den Keycloak-Host, wird für die Konfigurationsdatei von OpenResty benötigt.
Keycloak-Anmeldeseite in ein iFrame einbetten
Die Keycloak Anmeldeseite kann als iFrame in eine andere Webseite eingebettet werden, wenn sie über denselben Host-Namen veröffentlicht wird wie Keycloak. Wird die Webseite unter einem anderen Host-Namen veröffentlicht, dann muss dieser Host-Name in allen Keycloak-Mandanten legitimiert werden, die diese Webseite zur Anmeldung verwenden sollen:
-
Die Keycloak Admin Console aufrufen: http://localhost:8080/auth/admin/
-
Den Mandanten auswählen und den Host-Namen der Webseite hinzufügen über: Realm Settings > Security Defenses > Content-Security-Policy > frame-ancestors
Mehrere Host-Namen werden durch Leerzeichen getrennt.