Zum Inhalt

Keycloak

Keycloak ist eine Open-Source-Identitäts- und Zugriffsverwaltungslösung, die eine zentrale Benutzerverwaltung für moderne Anwendungen und Dienste ermöglicht. Als robuste Authentifizierungs- und Autorisierungsplattform bietet Keycloak:

  • Single Sign-On (SSO) für Web-Anwendungen und RESTful Webservices
  • Unterstützung für verschiedene Authentifizierungsprotokolle (OpenID Connect, OAuth 2.0, SAML)
  • Integration mit externen Benutzerverzeichnissen (LDAP, Active Directory)
  • Zwei-Faktor-Authentifizierung und Social Login
  • Benutzer-Federation und Identity Brokering
  • Umfangreiche Administrative Funktionen und Benutzer-Self-Service

Die Plattform ermöglicht eine sichere und effiziente Verwaltung von Benutzeridentitäten und Zugriffsrechten über eine zentrale Stelle.

Bisher wird Keycloak ausschließlich vom InGrid-Editor verwendet. Weitere Komponenten werden folgen, mit dem Ziel, Keycloak in allen InGrid-Komponenten zu verwenden.


Systemvoraussetzungen

Systembestandteil Anforderung
Hardware Arbeitsspeicher 1 GB RAM
Festplattenspeicher 10 GB frei
Prozessor Dual Core CPU
Software Java Java 21
PostgreSQL Version 13 oder höher

Installation

Am einfachsten ist die Installation über Docker und unser bereitgestelltes Docker-Image. Dies beinhaltet folgende Konfigurationen:

  • neuer Realm für InGrid
  • angepasstes Theme, das sich an die InGrid-Komponenten angliedert
  • einfache Konfiguration der Emails für das Zurücksetzen des Passworts
  • Erstellung der benötigten Rollen
  • Erstellung der Clients
  • Erstellung des Super-Admins für die Verwaltung des InGrid-Editors
  • Verzögerter Start bis Datenbank bereit ist

Docker

Beispiel docker-compose.yml
services:

    keycloak:
        image: docker-registry.wemove.com/keycloak:${KEYCLOAK_VERSION}
        restart: unless-stopped
        environment:
          - KC_BOOTSTRAP_ADMIN_USERNAME=admin
          - KC_BOOTSTRAP_ADMIN_PASSWORD=admin
          - KC_HTTP_RELATIVE_PATH=/keycloak
          - KC_HOSTNAME=http://${HOST_URL}/keycloak
          - KC_HTTP_ENABLED=true
          - KC_DB=postgres
          - KC_DB_URL_HOST=db
          - KC_DB_USERNAME=${DB_USERNAME}
          - KC_DB_PASSWORD=${DB_PASSWORD}
          - MAIL_SMTP=mailrelay
          - MAIL_FROM=${MAIL_FROM}
          - IGE_SUPER_USER_LOGIN=ige
          - IGE_SUPER_USER_PASSWORD=ige
          - IGE_SUPER_USER_FIRSTNAME=Max
          - IGE_SUPER_USER_LASTNAME=Mustermann
          - IGE_SUPER_USER_EMAIL=max.mustermann@beispiel.de
        networks:
          - informationgrid-network

In einer weiteren Datei .env werden die Variablen für die docker-compose.yml Datei gesetzt.

Umgebungsvariablen

Da als Basis das Original-Keycloak-Image verwendet wird, können hier alle Umgebungsvariablen für Keycloak verwendet werden (Keycloak-Umgebungsvariablen). Zusätzlich werden von uns die folgenden Umgebungsvariablen bereitgestellt:

Variable Hinweis Defaultwert
ADDITIONAL_REDIRECT_URIS Füge weitere URLs zum Client hinzu, um weitere InGrid-Editor Instanzen mit demselben Keycloak zu betreiben
IGE_CLIENT_ID Der Präfix für die Clients für den InGrid-Editor ige-ng
IGE_FRONTEND_URL Die URL unter der der InGrid-Editor erreichbar ist. Dies wird bspw. für die RedirectURL benötigt.
IGE_SUPER_USER_EMAIL Die Email-Adresse des Super-Admins im InGrid-Editor
IGE_SUPER_USER_FIRSTNAME Der Vorname des Super-Admins im InGrid-Editor
IGE_SUPER_USER_LASTNAME Der Nachname des Super-Admins im InGrid-Editor
IGE_SUPER_USER_LOGIN Die Benutzername des Super-Admins im InGrid-Editor
IGE_SUPER_USER_PASSWORD Das Passwort des Super-Admins im InGrid-Editor
IMPRINT_URL Die URL für das Impressum, welches auf der Login-Seite gezeigt werden soll #
MAIL_SMTP_PORT Der Port des SMTP-Servers für das Versenden von Emails
MAIL_SMTP Der Host des SMTP-Servers für das Versenden von Emails
ORGANIZATION Die Organisation, welches auf der Login-Seite gezeigt werden soll Name der Organisation
PROFILE Auswahl eines Profils für spezielle Anpassungen des Themes
PRIVACY_NOTE_URL Die URL für den Datenschutz, welches auf der Login-Seite gezeigt werden soll #
SIMPLE_SECURITY Initialisiert das InGrid-Realm mit einfachen Anforderungen für das Passwort (keine Mindestlänge, ...)
WAIT_FOR_DATABASE Warte auf die Datenbank, bevor Keycloak gestartet wird true
WAIT_FOR_DATABASE_TIMEOUT Maximale Wartezeit, die auf die Datenbank gewartet werden soll (in Sekunden) 180