User Management
Ziel
In dieser Aufgabe lernen Sie das umfassende User Management in Keycloak kennen. Sie werden E-Mail-Funktionalität einrichten, Passwort-Reset konfigurieren, Benutzerregistrierung aktivieren und erweiterte Benutzerattribute verwalten. Am Ende verstehen Sie, wie Keycloak's User Model funktioniert und können komplexe Benutzerworkflows konfigurieren.
Hilfsmittel
- Versuchen Sie, die unten stehenden Aufgaben mit Hilfe der Folien eigenständig zu lösen.
- Sollten Sie dabei Probleme haben, finden Sie bei jeder Aufgabe einen ausklappbaren Block, in dem der Lösungsweg beschrieben wird.
Vorbereitung
- Stellen Sie sicher, dass Ihre Keycloak-Instanz aus der vorherigen Aufgabe noch läuft
- Falls nicht, starten Sie sie erneut mit
docker compose up -d
- Loggen Sie sich als Admin in die Keycloak-Konsole ein
Aufgabe 1 - E-Mail-Funktionalität einrichten
1.1: MailDev als E-Mail-Test-Server starten
Zunächst richten wir einen lokalen E-Mail-Server für Testzwecke ein.
- Erweitern Sie Ihre
docker-compose.yml
um einen MailDev-Service:
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
Fügen Sie folgenden Service zu Ihrer docker-compose.yml
hinzu:
services:
# ... existing services ...
mail:
# Use to display mails (txt/html) in the browser
# Port 1025 -> SMTP-Server
# Port 8025 -> WebUI
image: maildev/maildev:2.1.0
ports:
- "8025:8025"
environment:
- MAILDEV_INCOMING_USER=smtp_user
- MAILDEV_INCOMING_PASS=pass
- MAILDEV_WEB_PORT=8025
networks:
- default
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.mail.rule=Host(`mail.code-{ZAHL}.labs.corewire.de`)"
- "traefik.http.services.mail.loadbalancer.server.port=8025"
healthcheck:
disable: true
- Starten Sie die Services neu:
docker compose up -d
- Testen Sie den MailDev-Zugang über
https://mail.code-{ZAHL}.labs.corewire.de
1.2: SMTP-Konfiguration in Keycloak
- Navigieren Sie in der Admin-Konsole zu Realm Settings > Email
- Konfigurieren Sie folgende SMTP-Einstellungen:
- Host:
mail
- Port:
1025
- Authentication: Aktiviert
- Username:
smtp_user
- Password:
pass
- Host:
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
- Gehen Sie zu Realm Settings
- Wählen Sie den Tab Email
- Füllen Sie folgende Felder aus:
- From:
admin@example.com
- From display name:
Keycloak Admin
- Host:
mail
- Port:
1025
- Authentication: Ein
- Username:
smtp_user
- Password:
pass
- From:
- Klicken Sie auf Save
1.3: E-Mail-Funktionalität testen
- Fügen Sie Ihrem Admin-Benutzer eine E-Mail-Adresse hinzu:
- Gehen Sie zu Users > Wählen Sie Ihren Admin-User
- Fügen Sie eine E-Mail-Adresse hinzu (z.B.
admin@example.com
)
- Testen Sie die E-Mail-Konfiguration über Test connection
- Überprüfen Sie, ob die Test-E-Mail in MailDev angekommen ist
Aufgabe 2 - Passwort-Reset konfigurieren
2.1: Passwort-Reset aktivieren
- Erstellen Sie einen neuen Testbenutzer:
- Username:
testuser
- Email:
testuser@example.com
- Setzen Sie ein temporäres Passwort
- Username:
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
- Gehen Sie zu Users > Add user
- Füllen Sie aus:
- Username:
testuser
- Email:
testuser@example.com
- First name:
Test
- Last name:
User
- Username:
- Klicken Sie Create
- Wechseln Sie zum Tab Credentials
- Klicken Sie Set password und setzen Sie ein Passwort
- Deaktivieren Sie Temporary (für jetzt)
- Aktivieren Sie Passwort-Reset in den Realm-Einstellungen:
- Realm Settings > Login
- Aktivieren Sie Forgot password
2.2: Passwort-Reset testen
- Öffnen Sie einen privaten Browser-Tab
- Navigieren Sie zur Account-Konsole Ihres Realms
- Klicken Sie auf Forgot Password?
- Geben Sie
testuser@example.com
ein und senden Sie die Anfrage - Überprüfen Sie die E-Mail in MailDev und folgen Sie dem Reset-Link
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
- Die Account-Konsole finden Sie unter Clients > account-console > Home URL
- Kopieren Sie die URL und öffnen Sie sie in einem privaten Tab
- Klicken Sie auf Forgot Password?
- Geben Sie
testuser@example.com
ein - Wechseln Sie zu MailDev und öffnen Sie die empfangene E-Mail
- Klicken Sie auf den Reset-Link und setzen Sie ein neues Passwort
Aufgabe 3 - Multi-Faktor-Authentifizierung (MFA)
3.1: OTP für Benutzer konfigurieren
- Gehen Sie zurück zum testuser in der Admin-Konsole
- Navigieren Sie zu Credentials > Credential Reset
- Wählen Sie Configure OTP und klicken Sie Send Email
- Überprüfen Sie die E-Mail in MailDev und folgen Sie den Anweisungen
Aufgabe 4 - Benutzerregistrierung aktivieren
4.1: Registrierung konfigurieren
-
Aktivieren Sie die Benutzerregistrierung:
- Realm Settings > Login
- Aktivieren Sie User registration
-
Testen Sie die Registrierung:
- Öffnen Sie die Login-Seite in einem privaten Tab
- Klicken Sie auf Register
- Registrieren Sie einen neuen Benutzer
4.2: Registrierungs-E-Mail-Verifizierung (Optional)
- Aktivieren Sie zusätzlich Verify email in den Login-Einstellungen
- Testen Sie die Registrierung erneut und überprüfen Sie den E-Mail-Workflow
Aufgabe 5 - Benutzerdefinierte Attribute
5.1: Attributgruppe erstellen
- Navigieren Sie zu Realm Settings > User Profile
- Erstellen Sie eine neue Attributgruppe:
- Name:
job-info
- Display name:
Job Information
- Name:
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
- Gehen Sie zu Realm Settings
- Wählen Sie den Tab User Profile
- Klicken Sie auf Attribute groups > Create group
- Füllen Sie aus:
- Name:
job-info
- Display name:
Job Information
- Name:
- Klicken Sie Save
5.2: Job Title Attribut erstellen
-
Erstellen Sie ein neues Attribut:
- Name:
jobTitle
- Display name:
Job Title
- Group:
job-info
- Permissions: Alle Häkchen setzen (View, Edit für User und Admin)
- Name:
-
Konfigurieren Sie Validierung:
- Validators > Options:
Developer,Support,Manager
- Validators > Options:
-
Fügen Sie Annotations hinzu:
- Annotations:
inputType
:select
inputOptionsFromValidation
:options
- Annotations:
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
- Klicken Sie auf Create attribute
- Füllen Sie das Formular aus:
- Name:
jobTitle
- Display name:
Job Title
- Attribute group:
job-info
- Name:
- Unter Permissions:
- Aktivieren Sie alle Checkboxen für User und Admin
- Unter Validation:
- Klicken Sie Add validator
- Wählen Sie Options
- Options:
Developer,Support,Manager
- Unter Annotations:
- Klicken Sie Add annotation
- Key:
inputType
, Value:select
- Klicken Sie Add annotation
- Key:
inputOptionsFromValidation
, Value:options
- Save
5.3: Attribut testen
- Gehen Sie zur Account-Konsole des
testuser
- Überprüfen Sie, ob das neue Job Title Feld als Dropdown angezeigt wird
- Wählen Sie einen Wert aus und speichern Sie
Aufgabe 6 - Terms and Conditions (Optional)
6.1: Terms and Conditions aktivieren
- Aktivieren Sie die Required Action:
- Authentication > Required Actions
- Aktivieren Sie Terms and Conditions (sowohl Enabled als auch Default Action)
6.2: Terms and Conditions im Registration Flow
- Konfigurieren Sie den Registration Flow:
- Authentication > Flows
- Wählen Sie Registration
- Klicken Sie auf Terms and Conditions
- Setzen Sie Requirement auf REQUIRED
6.3: Terms and Conditions testen
- Registrieren Sie einen neuen Benutzer über die Registrierungsseite
- Beobachten Sie, dass Terms and Conditions akzeptiert werden müssen
- Überprüfen Sie im Admin-Interface, ob der Zeitstempel der Zustimmung gespeichert wurde
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
- Nach der Registrierung sollten Sie zur Terms and Conditions Seite weitergeleitet werden
- Im Admin-Interface unter Users > [Benutzername] > Attributes sollten Sie einen Eintrag
TERMS_AND_CONDITIONS
mit Zeitstempel sehen
Cleanup und Reflexion
Aufräumen
- Stoppen Sie die Services:
docker compose down
Reflexionsfragen
Denken Sie über folgende Punkte nach:
- User Model: Welche Komponenten des Keycloak User Models haben Sie kennengelernt?
- E-Mail-Workflows: Welche E-Mail-basierten Funktionen sind in einer produktiven Umgebung wichtig?
- Benutzerattribute: Wie können benutzerdefinierte Attribute die Benutzererfahrung verbessern?
- Sicherheit: Welche Sicherheitsfeatures haben Sie konfiguriert und warum sind sie wichtig?
- Automatisierung: Welche Prozesse konnten Sie automatisieren (Default-Gruppen, Required Actions)?