Worum es geht
Bevor jemand ein Konto nutzen darf, muss feststehen, dass ihm die Adresse gehört. Dafür schickt CIAS eine Mail mit einem Link. Wer ihn anklickt, beweist, dass er das Postfach lesen kann.
CIAS macht das selbst, nicht Keycloak. So sind Mail, Link und Ablauf für alle Varianten gleich und in CIAS nachvollziehbar.
Der Ablauf
sequenceDiagram
participant C as CIAS
participant K as Keycloak
participant M as E-Mail
participant B as Benutzer
C->>K: Konto anlegen: enabled=false, emailVerified=false
C->>C: Token erzeugen, nur den Hash speichern
C->>M: Mail mit Link …/registration/verify?token=…
M-->>B: Mail
B->>C: POST /cias/registration/verify { token }
C->>C: Hash bilden, Vorgang suchen, gültig?
C->>C: Token verbraucht, Vorgang → VERIFIED
Note over C: dann Freigabe oder Bereitstellung
C->>K: emailVerified=true, enabled=true
Eigenschaften des Tokens
| Eigenschaft | Wert | Warum |
|---|---|---|
| Länge | 32 zufällige Bytes (256 Bit), als 43 Zeichen im Link | nicht zu erraten |
| gespeichert | nur der SHA-256-Hash | Wer die Datenbank liest, kann damit keinen Link bauen |
| gültig | so lange, wie der Ablauf festlegt (token-ttl, Standard 24 Stunden) | Links in alten Mails sollen nicht ewig funktionieren |
| Nutzung | einmal | Danach ist das Token verbraucht |
| eindeutig | jeder Hash gehört zu genau einem Vorgang |
Ein Hash ist ein Fingerabdruck: Aus dem Token lässt sich der Hash leicht berechnen, aus dem Hash aber nicht das Token.
Die Varianten
Wann: Token bekannt, nicht abgelaufen, Vorgang wartet auf den Klick.
Das Token wird als verbraucht markiert, der Vorgang geht nach VERIFIED. Danach geht es ohne weiteres Zutun weiter: zur Freigabe, wenn der Ablauf eine verlangt, sonst direkt in die Bereitstellung.
Ergebnis: 202 { "status": "accepted" }
Wann: Das Token wurde schon eingelöst. Häufig öffnet ein Mailprogramm Links vorab, um sie zu prüfen, und löst das Token damit vor der Person ein.
CIAS erkennt, dass der Vorgang schon weiter ist, und tut nichts. Die Antwort ist dieselbe wie beim ersten Klick.
Ergebnis: 202, keine Änderung.
Wann: Das Token gibt es nicht, oder es ist abgelaufen, während der Vorgang noch auf den Klick wartet.
Beide Fälle bekommen dieselbe Antwort. Wer Links errät, erfährt nichts.
Ergebnis: 404 cias.registration.not-found. Die Person registriert sich neu und bekommt eine neue Mail.
Wann: Die Mail kommt nicht an, und ein Plattform-Administrator hat die Adresse auf anderem Weg geprüft.
-
1Admin→CIAS
POST /cias/admin/registrations/{id}/activate -
2CIASWartet der Vorgang auf den Klick?
-
3CIASmarkiert das Token als verbraucht, auch wenn es abgelaufen ist, Vorgang →
VERIFIED -
4CIASweiter wie nach einem Klick
Ergebnis: Nur für Plattform-Administratoren.