CodamAIDocs
Themafertig

Der Lebenslauf eines Benutzers

PENDING, ACTIVE, SUSPENDED, CLOSED: jeder Übergang und warum CLOSED endgültig ist.

Ausprägungen
PENDINGACTIVESUSPENDEDCLOSED

Worum es geht

Jeder Benutzerdatensatz hat einen Status. Er sagt, ob die Person die Anwendung nutzen darf. In Keycloak gibt es dafür nur „aktiviert“ oder „deaktiviert“; CIAS unterscheidet vier Zustände, weil „gesperrt“ und „geschlossen“ fachlich etwas anderes bedeuten.

Das Zustandsdiagramm

stateDiagram-v2
    direction LR
    [*] --> PENDING: Datensatz angelegt
    PENDING --> ACTIVE: aktivieren
    PENDING --> SUSPENDED: sperren
    ACTIVE --> SUSPENDED: sperren
    SUSPENDED --> ACTIVE: reaktivieren
    PENDING --> CLOSED: schließen
    ACTIVE --> CLOSED: schließen
    SUSPENDED --> CLOSED: schließen
    CLOSED --> [*]

Die vier Zustände

StatusBedeutungIn KeycloakKann sich anmelden
PENDINGDatensatz angelegt, noch nicht aktiviert. Kommt meist nur kurz vor, während eine Registrierung abgeschlossen wird, oder nach der Übernahme eines Kontos, das in Keycloak nicht aktiv warunverändertnein
ACTIVEaktivaktiviertja
SUSPENDEDgesperrt, etwa bei Verdacht auf Missbrauch oder während einer Klärungdeaktiviertnein
CLOSEDgeschlossen, das Konto ist dauerhaft beendetdeaktiviertnein

Die Übergänge

Wer welchen Übergang auslöst

Wann: am Ende einer Registrierung, bei der Übernahme eines aktiven Kontos, oder per POST /cias/admin/users/{id}/reactivate

Aus jedem Zustand außer CLOSED. Ist die Person schon aktiv, ändert sich nichts. CIAS schaltet das Konto in Keycloak frei.

Ergebnis: ACTIVE, Event Activated

Wann: POST /cias/admin/users/{id}/suspend mit Grund

Aus PENDING oder ACTIVE. CIAS deaktiviert das Konto in Keycloak.

Ergebnis: SUSPENDED, Event Suspended mit dem Grund

Wann: POST /cias/admin/users/{id}/close mit Grund

Aus jedem Zustand. CIAS deaktiviert das Konto in Keycloak, gelöscht wird nichts. Schließen ist endgültig.

Ergebnis: CLOSED, Event Closed mit dem Grund

Warum CLOSED endgültig ist

Ein geschlossenes Konto lässt sich weder reaktivieren noch sperren noch in einen anderen Mandanten umziehen. Ein solcher Versuch endet mit 409 cias.user.invalid-state.

Der Grund: Schließen soll ein klarer Schlussstrich sein, etwa wenn jemand das Unternehmen verlässt. Könnte man ein geschlossenes Konto wieder öffnen, wäre „geschlossen“ nur ein anderes Wort für „gesperrt“.

Weiter

Quellen im Code und in der Wissensdatenbank
  • CIAS/cias-user – UserStatus, User (activate, suspend, close, moveTo), UserService, UserEvent
  • CIAS/cias-iam-keycloak – KeycloakIdentityAdapter (enable, disable)
  • CIAS/cias-user/docs/adr – ADR-017
Suchen