Files
desktop/temp/MODERIERTE_REGISTRIERUNG_KONZEPT.md
Lars Gebhardt-Kusche cd5525ff2e
All checks were successful
Deploy / deploy-staging (push) Successful in 52s
Deploy / deploy-production (push) Has been skipped
asdsad
2026-06-10 22:44:28 +02:00

5.2 KiB

Moderierte Registrierung für desktop.kusche.berlin

Ziel

Neue Nutzer sollen sich über die Login-Seite registrieren können, aber nicht sofort Zugriff auf den Desktop erhalten.

Stattdessen soll der Ablauf so sein:

  1. Nutzer füllt Registrierungsformular aus.
  2. Anfrage wird als ausstehend gespeichert.
  3. Eine berechtigte Person prüft und genehmigt oder lehnt ab.
  4. Erst bei Genehmigung wird der LDAP-/NAS-kompatible Benutzer vollständig angelegt.
  5. Erst danach darf sich der Nutzer einloggen.

Warum der normale Keycloak-Registrierungsflow hier nicht reicht

Der Standard-Registrierungsflow von Keycloak ist für euer Setup ungeeignet, weil:

  • Keycloak aktuell nur einen sehr schlanken LDAP-Eintrag erzeugt
  • die NAS aber deutlich mehr Attribute erwartet
  • Benutzer bei Standard-Registrierung sofort im Keycloak-Kontext existieren
  • eine nachträgliche manuelle Freigabe damit unnötig kompliziert wird

Für eure Umgebung ist es sauberer, die Registrierung vor Keycloak bzw. neben Keycloak zu behandeln.

Empfohlene Architektur

1. Eigenes Registrierungsformular im Projekt

Nicht Keycloak Registrieren verwenden, sondern:

  • eigene Seite, z. B. /auth/register
  • eigenes Formular für:
    • Benutzername
    • Vorname
    • Nachname
    • E-Mail
    • Passwort
    • optional Begründung / Einladungscode / Referenz

Diese Daten landen nicht direkt im LDAP, sondern zuerst in einer Warteschlange.

2. Pending-Store für Registrierungsanfragen

Die Registrierung wird lokal gespeichert, z. B.:

  • JSON-Datei in data/registration-requests.json
  • oder besser SQLite / kleine Datenbank

Status je Eintrag:

  • pending
  • approved
  • rejected
  • provisioned
  • failed

Zusätzlich speichern:

  • Zeitstempel
  • IP
  • Browser
  • gewünschter Benutzername
  • Mail
  • Vorname / Nachname
  • gehashter Passwort-Entwurf oder temporärer verschlüsselter Wert

Wichtig zum Passwort

Passwörter dürfen nicht im Klartext in so einer Warteschlange liegen.

Saubere Varianten:

  1. Passwort erst nach Freigabe setzen lassen
  2. oder verschlüsselt zwischenlagern
  3. oder nach Freigabe Einladungslink / Set-Password-Link senden

Empfehlung:

  • bei Registrierung noch kein finales Passwort speichern
  • nach Freigabe bekommt der Nutzer einen Aktivierungslink
  • Passwort wird erst dann final gesetzt

Das ist deutlich sauberer und sicherer.

3. Admin-/Freigabe-Tool

Es braucht ein internes Tool, z. B.:

  • Desktop-App Benutzerfreigaben
  • oder vorerst einfache Admin-Seite /admin/registrations

Funktionen:

  • offene Registrierungen anzeigen
  • Details prüfen
  • genehmigen
  • ablehnen
  • Notiz hinterlegen

Nur bestimmte Gruppen dürfen das:

  • administrators
  • optional appadmin

4. Provisioning-Tool für LDAP/NAS

Bei Genehmigung startet euer eigenes Provisioning-Tool.

Dieses Tool erzeugt dann den Benutzer korrekt für die NAS, also mit allen nötigen Feldern:

  • passende objectClass
  • uid
  • cn
  • sn
  • mail
  • uidNumber
  • gidNumber
  • homeDirectory
  • loginShell
  • ggf. displayName
  • ggf. gecos
  • ggf. Apple-/Samba-/Shadow-Felder
  • passende Gruppenmitgliedschaften

Genau dieser Teil sollte nicht Keycloak überlassen werden.

5. Aktivierung für Keycloak-Login

Nach erfolgreicher LDAP-Anlage:

  • Nutzerstatus im Pending-Store auf provisioned
  • Login ab dann erlaubt

Optional zusätzlich:

  • Nutzer in bestimmte Startgruppen setzen
  • Mail zur Freischaltung versenden
  • Passwort-Setzen-Link generieren

Technische Varianten

Variante A: Registrierung komplett außerhalb von Keycloak

Flow:

  1. Login-Seite hat Button Registrieren
  2. Button führt auf eure eigene Registrierungsseite
  3. Anfrage landet lokal im Pending-Store
  4. Admin genehmigt
  5. euer Tool legt LDAP-User korrekt an
  6. danach Login über Keycloak gegen LDAP

Das ist die empfohlene Variante.

Variante B: Keycloak-Registrierung bleibt aktiv

Flow:

  1. Nutzer registriert sich in Keycloak
  2. Benutzer wird dort oder im LDAP teilweise angelegt
  3. zusätzliche Freigabelogik blockiert Login

Nachteile:

  • unsauberer Zustand
  • doppelte Logik
  • schwerer kontrollierbar
  • LDAP-/NAS-Kompatibilität bleibt problematisch

Diese Variante würde ich nicht empfehlen.

Empfohlene Umsetzung für dieses Projekt

Phase 1

  • Keycloak-Registrierung im Login-Theme wieder entfernen oder deaktivieren
  • eigene Route /auth/register
  • einfache Ablage als JSON oder SQLite
  • Admin-Ansicht für Freigaben

Phase 2

  • eigenes LDAP-Provisioning-Skript / Service
  • Vergabe der fehlenden NAS-relevanten Attribute
  • Gruppen-Standardzuweisung

Phase 3

  • Aktivierungs-Mail oder Passwort-Setz-Link
  • Audit-Log
  • Benachrichtigungen für Administratoren

Konkrete Entscheidungsempfehlung

Ja, wir können dafür ein Tool bauen.

Die saubere Lösung ist:

  • nicht die Keycloak-Registrierung zu verbiegen
  • sondern eine eigene moderierte Registrierung im Projekt zu bauen
  • und erst nach Freigabe den LDAP-/NAS-Benutzer korrekt zu provisionieren

Nächster sinnvoller Schritt

Als nächstes sollten wir bauen:

  1. Registrieren im Login nicht mehr auf Keycloak zeigen lassen
  2. neue Projektseite /auth/register
  3. lokaler pending-Store
  4. interne Admin-Seite für Freigaben

Danach kommt das LDAP-Provisioning.