Worum es geht
Manche Rollen braucht einfach jeder, etwa die Realm-Rolle user oder das Recht, das eigene Profil zu lesen. Statt jede neue Person von Hand in eine Gruppe aufzunehmen, markierst du die Gruppe als Standardgruppe. Dann wird jedes neue Konto automatisch Mitglied.
Warum so? Sonst würde ein einziges Häkchen auf einer Seite auf einen Schlag ändern, was tausende vorhandene Personen dürfen, und keine Seite könnte vorher zeigen, wen es trifft.
Eine Gruppe zur Standardgruppe machen
Du setzt beim Anlegen oder Ändern "defaultGroup": true, siehe Gruppen und Mitglieder verwalten. Es kann mehrere Standardgruppen geben. Ein neues Konto wird dann Mitglied in allen.
PUT /cias/admin/groups/grundrechte
{
"key": "grundrechte",
"name": "Grundrechte",
"roles": [ { "client": null, "key": "user" } ],
"defaultGroup": true
}HTTP 200
{ "key": "grundrechte", "memberCount": 0, "defaultGroup": true, "syncState": "SYNCHRONIZED", … }memberCount bleibt 0. Die Antwort zeigt beides nebeneinander: memberCount ist, was die Gruppe jetzt ist, defaultGroup ist, was sie wird.
Zwei Hälften, beide nötig
Eine Standardgruppe steht an zwei Stellen:
| Hälfte | Was sie tut | Für wen |
|---|---|---|
| CIAS | nimmt die Person nach einer abgeschlossenen Registrierung in die Gruppe auf und speichert die Mitgliedschaft | alle, die über eine CIAS-Registrierung kommen |
| Keycloak | CIAS trägt die Gruppe in die Liste der Default Groups des Realms ein. Keycloak legt jedes neu angelegte Konto selbst hinein | jedes Konto, das in Keycloak neu entsteht |
Die CIAS-Hälfte sorgt dafür, dass CIAS die Mitgliedschaft kennt: Mitgliederliste, memberCount und der Abgleich sehen sie. Die Keycloak-Hälfte sorgt dafür, dass ein neues Konto die Rollen gleich beim ersten Token hat.
Der Ablauf bei einer Registrierung
-
1CIASrichtet das Konto ein: Mandant, Mitgliedschaft, Startrollen
-
2Hooklegt den Benutzerdatensatz in CIAS an
-
3Hooksucht alle Standardgruppen. Keine da? Dann ist hier Schluss
-
4CIASspeichert die Mitgliedschaft in jeder Standardgruppe
-
5CIAS→Keycloaknimmt die Person in jede dieser Gruppen aufErgebnis: Die Person ist Mitglied, in CIAS und in Keycloak
Der Schritt läuft nach dem Anlegen des Benutzerdatensatzes, denn Mitglieder sind Benutzerdatensätze. Er läuft als Hook innerhalb der Registrierung: Kann CIAS die Mitgliedschaft nicht speichern, scheitert die Registrierung. Ein Konto, das still ohne seine Standardgruppe bliebe, würde bei der ersten Anfrage scheitern, und niemand wüsste, warum. Mehr zu Hooks unter Eigene Logik: Hooks und Events.
Die Ausprägungen
Wann: Selbstregistrierung, Einladung oder Anlage durch den Plattform-Administrator, und die Registrierung ist fertig.
CIAS nimmt die Person in alle Standardgruppen auf, erst in CIAS, dann in Keycloak.
Ergebnis: Mitglied in allen Standardgruppen
Wann: Eine Person mit vorhandenem Konto registriert sich für einen weiteren Mandanten.
Auch diese Registrierung endet mit demselben Hook. Die Person wird Mitglied der Standardgruppen, in denen sie noch nicht ist. War sie schon Mitglied, bleibt es bei einer Mitgliedschaft.
Ergebnis: Mitglied in allen Standardgruppen
Wann: Jemand legt ein Konto in der Keycloak-Konsole oder über Keycloaks eigene Registrierungsseite an.
Keycloak legt das Konto selbst in die Standardgruppen. CIAS erfährt davon nichts und führt diese Mitgliedschaft nicht. Der nächste Abgleich bringt die Mitglieder in Keycloak auf den Stand von CIAS und nimmt die Person wieder heraus.
Ergebnis: Mitglied nur bis zum nächsten Abgleich. Für dauerhafte Mitgliedschaft: Konto übernehmen und in CIAS aufnehmen
Wann: defaultGroup wechselt von false auf true.
CIAS trägt die Gruppe in Keycloak als Default Group ein. Niemand wird nachträglich aufgenommen.
Ergebnis: gilt ab dem nächsten neuen Konto
Wann: defaultGroup wechselt von true auf false.
CIAS nimmt die Gruppe zuerst aus Keycloaks Liste, dann ändert es den eigenen Datensatz. Alle Mitglieder bleiben Mitglieder.
Ergebnis: keine neuen Mitglieder mehr, bestehende bleiben
Wann: Bei der Aufnahme nach der Registrierung antwortet Keycloak nicht.
Die Mitgliedschaft steht in CIAS, die Gruppe wird PENDING. Die Registrierung scheitert nicht: Niemand soll sein Konto verlieren, weil Keycloak kurz weg war. Der nächste Abgleich holt die Mitgliedschaft in Keycloak nach.
Ergebnis: Registrierung fertig, Rollen erst nach dem Abgleich im Token
Die Entscheidung
| Wie entsteht das Konto? | War die Gruppe da schon Standardgruppe? | Ergebnis |
|---|---|---|
| über eine CIAS-Registrierung | ja | ja, in CIAS und Keycloak |
| direkt in Keycloak | ja | nur in Keycloak, bis zum nächsten Abgleich |
| es gibt das Konto schon | – | nein, es sei denn, die Person registriert sich neu für einen Mandanten |
| – | nein | nein, auch nicht nachträglich |