Table of Contents
Keycloak
SSH Zugang grundsätzlich via: ssh opa02-jusos_keycloak@h11.hostsharing.net Passwort siehe Bitwarden
Neue Doku (vor 2024)
Generell ist die Keycloak Dokumentation zu empfehlen: https://www.keycloak.org/documentation Keycloak wird laufend weiterentwickelt und Foren-Einträge sind häufig veraltet, während die Hauptdokumentation bei Google schlecht indiziert ist.
Deployment
Aktuelle Version ist immer in
~/keycloak
gelinkt (in der Regel auf die größte Versionsnummer).
Start/Build-Script
~/kc-build-script.sh
Stand 2024-01-28 #!/bin/bash set -e #stop on error set -x #prints commands cd $HOME/keycloak ./bin/kc.sh build --metrics-enabled=true --cache=local systemctl --user restart keycloak sleep 1 systemctl --user status keycloak
Unit-Skript
Hält den Dienst dauerhaft alive
~/.config/systemd/user/keycloak.service
Stand 2024-01-28 [Unit] Description=Keycloak Open Source Identity and Access Management [Service] Type=simple Restart=always RestartSec=2s ExecStart=%h/keycloak/bin/kc.sh start --optimized --spi-connections-jpa-quarkus-migration-strategy=update [Install] WantedBy=multi-user.target
Server-Konfiguration
Konfigurationsdatei
~/keycloak/conf/keycloak.conf
Host: 127.0.0.1 Port: 9005
Log
~/keycloak/keycloak.log
Theme
Wir überschreiben zur Zeit nur das Login-Theme (SSO). Das Theme ist ein Clon vom Keycloakv1-Theme (/lib/lib/main/org.keycloak.keycloak-themes-xx.xx.x.jar). Dieses erbt vom Basis-Theme. Die Jar-Datei kann mit einem Zip-Programm geöffnet werden.
Letztlich haben wir primär das Hintergrundbild ausgetauscht und ein paar Kleinigkeiten verändert. Unser Theme liegt als „Rote Tools v4“ im Theme-Ordner.
ToDo: Theme vernünftig vom KC-V1-Theme erben lassen.
Achtung, Stolperfallen
- Neues Theme lädt nicht?
- Es können für jeden Client eigene Themes geladen werden, die das globale Theme überschreiben.
- Keycloak mit folgendem Befehl neu starten:
start --spi-theme-static-max-age=-1 --spi-theme-cache-themes=false --spi-theme-cache-templates=false
Webkonfiguration
Zugang unter https://login.rote.tools/.
Realms
Keycloak erlaubt Realms für verschiedene Nutzer:innen-Gruppen. Unsere Produktiv-Umgebung liegt in “user”.
Username-Validation
Um eine Username-Validation bei der Registrierung zu ermöglichen, haben wir das Preview-Feature „DECLARATIVE_USER_PROFILE“ aktiviert.
Unter Realm-Settings > User Profile > username läuft die Validation via pattern:
{"pattern":"^[a-z0-9.\\-_]{3,63}$","error-message":"username-validation-error"}
Die Errormessage wird über die Sprachkonfiguration Realm-Settings > Localization ausgegeben.
Alte Doku (vor 2023)
Links für Dienste (open id discovery url)
https://keycloak.jusos.rocks/realms/master/.well-known/openid-configuration
Server Neustart
Es liegt im Home Verzeichnis des Users ein start-script.sh und ein stop-script.sh. Mit diesen kann der Server neu gestartet werden.
Aktuell werden die Debug-logs aus der Ausgabe weggeworfen. Sollten diese mal wichtig sein lässt sich der Server alternativ temporär auch mit
~/keycloak/bin/kc.sh start --http-port 8080 --http-host 127.0.0.1 --proxy edge --features=preview
gestartet werden - der logoutput landet dann im stdout in der Konsole
Reverse-Proxy
Unter
~/doms/keycloak.jusos.rocks/htdocs-ssl/.htaccess
ist der Proxy definiert der den output der Java-Anwendung vom Localhost ins Netz durchreicht. Dateien die mit dem korrekten Pfad im htdocs-ssl ordner gefunden werden, werden prioritär behandelt.
Theme
Zur Zeit existiert ein rudimentäres Custom-Juso-Theme auf Skeleton-Basis für die SSO-Login/Register-Seite:
~/keycloak/themes/juso-template/
Das Theme extended das Basis-Template um die CSS-Dateien style.css, skeleton.css und normalize.css. An den HTML-Grundlagen wurde nichts angepasst.
Theme-Entwicklung
Um am Theme zu entwickeln, empfiehlt sich eine lokale Standalone-Instanz aufzusetzen und mit folgenden Optionen zu starten:
bin/kc.sh start-dev --spi-theme-static-max-age=-1 --spi-theme-cache-themes=false --spi-theme-cache-templates=false
Offene TODOs
- Weg migrieren vom Master Realm, der sollte nur für KC selbst verwendet werden, Test Realms für den API Test
- Theme mobile optimieren
- Rausfinden wie man Gruppen mit den fine grant permissions selbstverwaltet organisieren kann
- Prüfen ob andere Loginvarianten sinnvoll / nötig sind (TOPT, Magic Link)
- Rechte Management aufräumen, das man granularer pro Client Admin rechte vergeben kann
- mehr Attribute ausliefern. Wie bspw. Quotas, Picture URL uvm