Keycloak konfigurieren mit Bezug zur B2B by Practice

Keycloak ist eine System Komponente zur Authentifizierung von Benutzern, die aus verschiedenen Quellen stammen können. Im folgenden Fall wird Keycloak mit der B2B Datenbank verknüpft.

Keycloak Konfiguration

Diese Seite beschreibt die Konfiguration in der Adminoberfläche von Keycloak mit Blick auf die Anbindung der B2B.

Die Admin-Oberfläche ist über http://<MY-HOST>:<MY-PORT>/ erreichbar. Der Port kann in der Datei standalone/configuration/standalone.xml in der Zeile <socket-binding name="http" port="${jboss.http.port:<MY-PORT>}"/> ermittelt werden.

Falls der Port für gewöhnlich NICHT für Webaufrufe verwendet wird (z.B. 6667), muss das eventuell für den verwendeten Browser erst freigeschaltet werden. Für Firefox geht das über about:config und das Hinzufügen der Eigenschaft network.security.ports.banned.override. Diese beinhaltet einen String der Form Port-Port und könnte wie folgt sein 6660-6670 um den eben erwähnten 6667 verwenden zu können.

Vor der ersten Anmeldung am Keycloak-Server muss ein neuer Benutzer angelegt werden, siehe dazu den Abschnitt Admin anlegen in der Installationsanleitung.

Für jede Landschaft von Anwendungen, welche über Keycloak mit der gleichen Benutzerdatenbank abgesichert werden soll, muss in Keycloak ein Realm angelegt werden. Für jede Anwendung innerhalb dieser Landschaft, welche sich bei Keycloak authentifizieren soll, muss ein Client konfiguriert werden.

Im ersten Schritt betrachten wir den Realm.

Realm

Der Master Realm ist für die Administration von Keycloak und steht in keinem Zusammenhang zur Anbindung der B2B. Für die Anbindung der B2B by Practice und weiteren folgenden Komponenten, wird ein neuer Realm angelegt, in unserem Beispiel b2b-qa.

Bitte achten sie in der Konfiguration, auf Groß- und Kleinschreibung.

Sollten mehrere Systemstufen (Entwicklungs-, Test- und Produktionssystem) an den gleichen Keycloak Cluster angebunden werden, müssen pro Stufe separate Realms angelegt werden. Innerhalb eines Realms wird zum Beispiel die Benutzerdatenbank (User Federation) definiert, mehr dazu auf der Seite zum B2B-Datenbank-Adapter.

Die Dokumentation Server Administration Guide (Create a New Realm) bietet weitere Information.

Add Realm

Name Realm

Overview Realm

In den allgemeinen Einstellungen des Realm kann die Überschrift auf der durch Keycloak bereitgestellten Login-Seite konfiguriert werden (Display name bzw. HTML Display name).

Realm Settings

Im Menü Realm Settings finden sich allgemeine Konfiguration für den ganzen Realm.

Im Untermenü Tokens können verschiedene Gültigkeitszeiträume konfiguriert werden. Besonders interessant ist die Access Token Lifespan: Diese sollte aus Sicherheitsgründen möglichst niedrig eingestellt werden. Falls es einem Angreifer gelingt, ein Token zu stehlen, ist dadurch der Schadenszeitraum limitiert. Andererseits bedeutet eine niedrige Lifespan auch, dass das Token regelmäßig erneuert werden muss, wodurch die Browser der User häufiger mit dem Keycloak Server kommunizieren müssen.

Clients

In diesem Abschnitt betrachten wir die Konfiguration der Clients innerhalb eines Realms.

Pro Anwendung, Service oder Microservice, welcher zu einer Landschaft von Anwendungen gehört muss im Realm ein Client angelegt werden. Eine kurze Erläuterung, was mit dem Begriff “Anwendung” bzw. “Landschaft” gemeint ist, ist in der Einleitung im Abschnitt Applikationslandschaft zu finden.

Die Dokumentation Server Administration Guide (Managing Clients) bietet weitere Information.

In der Konfiguration der Clients erzeugen wir mit Create Client einen Client.

Add Client

(Ansicht, bevor ein Client mit B2B-Bezug angelegt wurde)

Bei der Verwendung von Docker, sollte der Host <my-host> bei den folgenden Clients nicht localhost sein. Siehe dazu auch der Abschnitt localhost auf der Seite über Docker.

Tomcat-Webapplikation

Der erste Client soll der B2B by Practice auf dem Tomcat entsprechen, wir nennen ihn also im Beispiel b2b-tomcat-war. Als Root URL geben wir die Adresse der B2B inkl. Port an.

Nach der initialen Erstellung kann noch die Einstellung Direct Access Grants Enabled deaktiviert werden.

Name Client

Overview Client

Die Benennung dieses Clients ist flexibel und kann frei gewählt werden. Bitte beachten sie Groß- und Kleinschreibung.

Um weitere Anwendungen abzusichern, müssen weitere Clients konfiguriert werden.

B2B Benutzeroberfläche (B2BUI)

Für die B2B Benutzeroberfläche, im Folgenden B2BUI genannt, legen wir in der Keycloak Administration einen weiteren Client mit dem Namen b2b-functional-ui an um Keycloak einen neuen Client für die Authentifizierung bekannt zu machen.

Name Client

Der Port 4040 ist variabel und kann in der Einrichtung der B2BUI gewählt werden, siehe dazu der Abschnitt zur application.yml.

Damit ist die Anwendung abgesichert. Alle im Realm enthaltenen Clients können per SSO angesprochen werden.

View Me   Edit Me