Keycloak als Identity Provider

enaio® 10.10 »

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\:
  • Ergänzen des Abschnitts <interfaces> um folgenden Eintrag:

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

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.