Zum Inhalt

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
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
  1. Gehen Sie zu Realm Settings
  2. Wählen Sie den Tab Email
  3. 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
  4. 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
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
  1. Gehen Sie zu Users > Add user
  2. Füllen Sie aus:
    • Username: testuser
    • Email: testuser@example.com
    • First name: Test
    • Last name: User
  3. Klicken Sie Create
  4. Wechseln Sie zum Tab Credentials
  5. Klicken Sie Set password und setzen Sie ein Passwort
  6. 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)
  1. Die Account-Konsole finden Sie unter Clients > account-console > Home URL
  2. Kopieren Sie die URL und öffnen Sie sie in einem privaten Tab
  3. Klicken Sie auf Forgot Password?
  4. Geben Sie testuser@example.com ein
  5. Wechseln Sie zu MailDev und öffnen Sie die empfangene E-Mail
  6. 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
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
  1. Gehen Sie zu Realm Settings
  2. Wählen Sie den Tab User Profile
  3. Klicken Sie auf Attribute groups > Create group
  4. Füllen Sie aus:
    • Name: job-info
    • Display name: Job Information
  5. 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)
  • Konfigurieren Sie Validierung:

    • Validators > Options: Developer,Support,Manager
  • Fügen Sie Annotations hinzu:

    • Annotations:
      • inputType: select
      • inputOptionsFromValidation: options
Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
  1. Klicken Sie auf Create attribute
  2. Füllen Sie das Formular aus:
    • Name: jobTitle
    • Display name: Job Title
    • Attribute group: job-info
  3. Unter Permissions:
    • Aktivieren Sie alle Checkboxen für User und Admin
  4. Unter Validation:
    • Klicken Sie Add validator
    • Wählen Sie Options
    • Options: Developer,Support,Manager
  5. Unter Annotations:
    • Klicken Sie Add annotation
    • Key: inputType, Value: select
    • Klicken Sie Add annotation
    • Key: inputOptionsFromValidation, Value: options
  6. 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)
  1. Nach der Registrierung sollten Sie zur Terms and Conditions Seite weitergeleitet werden
  2. 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:

  1. User Model: Welche Komponenten des Keycloak User Models haben Sie kennengelernt?
  2. E-Mail-Workflows: Welche E-Mail-basierten Funktionen sind in einer produktiven Umgebung wichtig?
  3. Benutzerattribute: Wie können benutzerdefinierte Attribute die Benutzererfahrung verbessern?
  4. Sicherheit: Welche Sicherheitsfeatures haben Sie konfiguriert und warum sind sie wichtig?
  5. Automatisierung: Welche Prozesse konnten Sie automatisieren (Default-Gruppen, Required Actions)?