Worum es geht
In CIAS gilt: Eine E-Mail-Adresse ist ein Konto. Es gibt kein zweites Konto für dieselbe Adresse. Ein Konto kann aber Mitglied in beliebig vielen Mandanten sein.
Deshalb fragt jede Registrierung zuerst: Gibt es zu dieser Adresse schon ein Konto, das jemandem gehört? Die einzige Ausnahme ist das Überbleibsel eines abgebrochenen Versuchs: in Keycloak deaktiviert und die Adresse nie bestätigt. Jedes andere Konto gehört jemandem, auch ein gesperrtes oder geschlossenes.
Welche Art von Vorgang
Jede Registrierung hat eine Art (kind):
| Art | Wann | Was mit dem Konto passiert |
|---|---|---|
NEW_ACCOUNT | Die Adresse hat kein Konto oder nur ein Überbleibsel. | Ein Konto wird deaktiviert angelegt (oder das Überbleibsel übernommen) und nach dem Klick freigeschaltet. |
ADDITIONAL_MEMBERSHIP | Die Adresse hat ein Konto, auch ein gesperrtes. | Nichts. Nach dem Klick kommen nur Mitgliedschaft und Rollen dazu. Ist das Konto gesperrt, scheitert der Vorgang. |
Welche Mail die Person bekommt
| Konto zur Adresse? | Ablauf ordnet einen Mandanten zu? | Mail und Folge |
|---|---|---|
| nein | – | VERIFY_EMAIL: Link bestätigt die Adresse, danach neues Konto |
| ja | ja | MEMBERSHIP_INVITATION: Link führt zum Beitritt in den Mandanten. Passwort und Konto bleiben, wie sie sind |
| ja | nein | ALREADY_REGISTERED: „Sie haben bereits ein Konto“, mit Link zur Anmeldung |
Die Links in den Mails gelten so lange, wie der Ablauf es festlegt (token-ttl), bei der Selbstregistrierung in cias-runtime 24 Stunden, bei der Einladung 14 Tage.
Von außen sehen alle drei Fälle gleich aus: Das Formular antwortet immer mit 202 accepted. Nur die Mail unterscheidet sich, und die bekommt nur, wer Zugriff auf das Postfach hat. So lässt sich über die API nicht herausfinden, ob eine Adresse ein Konto hat.
Sonderfälle
Wann: Zu der Adresse gibt es ein Konto in Keycloak, das nie freigeschaltet wurde, etwa von einer Registrierung, deren Link nie geklickt wurde.
Das Konto ist deaktiviert und seine Adresse nie bestätigt, es gilt also als Überbleibsel. Die neue Registrierung ist deshalb NEW_ACCOUNT, legt aber kein zweites Konto an, sondern übernimmt das vorhandene. Nach dem Klick wird es freigeschaltet.
Ergebnis: Kein Konto-Friedhof, keine Fehlermeldung „Adresse schon vergeben“.
Wann: Das Konto ist gesperrt oder geschlossen. In Keycloak ist es deaktiviert, die Adresse aber bestätigt.
Das Konto gehört jemandem. Die Registrierung ist ADDITIONAL_MEMBERSHIP und antwortet wie bei jeder bekannten Adresse mit 202. Löst die Person den Link ein, scheitert der Vorgang mit 422 cias.registration.account-locked, bevor Mandant oder Rollen vergeben werden. Das gilt auch, wenn das Konto erst gesperrt wurde, während die Mail unterwegs war.
Ergebnis: Eine Sperre hebt nur ein Administrator auf. Eine bestätigte Adresse ist dafür kein Grund.
Wann: Dieselbe Adresse hat noch einen Vorgang, der auf den Klick oder die Freigabe wartet.
Der ältere Vorgang geht sofort nach EXPIRED. Nur der Link aus der neuesten Mail gilt. Ein Klick auf den alten Link ändert nichts mehr.
Ergebnis: Wer die erste Mail nicht findet, registriert sich einfach noch einmal.