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.ymlum 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.comein 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.comein - 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:selectinputOptionsFromValidation: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_CONDITIONSmit 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)?