====== 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