CodamAIDocs
Themafertig

Die Standardgruppe

Welche Gruppe jede neue Person automatisch bekommt und warum das nur für neue Konten wirkt.

Ausprägungen
Registrierung abgeschlossenbestehendes Konto registriert sichKonto entsteht direkt in KeycloakGruppe wird StandardgruppeGruppe ist keine Standardgruppe mehrKeycloak nicht erreichbar

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.

Anfrage
PUT /cias/admin/groups/grundrechte
{
  "key": "grundrechte",
  "name": "Grundrechte",
  "roles": [ { "client": null, "key": "user" } ],
  "defaultGroup": true
}
Antwort
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älfteWas sie tutFür wen
CIASnimmt die Person nach einer abgeschlossenen Registrierung in die Gruppe auf und speichert die Mitgliedschaftalle, die über eine CIAS-Registrierung kommen
KeycloakCIAS trägt die Gruppe in die Liste der Default Groups des Realms ein. Keycloak legt jedes neu angelegte Konto selbst hineinjedes 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

Eine Registrierung wird abgeschlossen
  1. 1
    CIAS
    richtet das Konto ein: Mandant, Mitgliedschaft, Startrollen
  2. 2
    Hook
    legt den Benutzerdatensatz in CIAS an
  3. 3
    Hook
    sucht alle Standardgruppen. Keine da? Dann ist hier Schluss
  4. 4
    CIAS
    speichert die Mitgliedschaft in jeder Standardgruppe
  5. 5
    CIAS→Keycloak
    nimmt die Person in jede dieser Gruppen auf
    Ergebnis: 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

Wer wann Mitglied wird

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

Wird diese Person Mitglied der Standardgruppe?
Wie entsteht das Konto?War die Gruppe da schon Standardgruppe?Ergebnis
über eine CIAS-Registrierungjaja, in CIAS und Keycloak
direkt in Keycloakjanur 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
–neinnein, auch nicht nachträglich

Fallen

Weiter

Quellen im Code und in der Wissensdatenbank
  • CIAS/cias-authorization – Group (defaultGroup, makeDefault), DefaultGroupEnrolment, DefaultGroupEnrolmentUseCase, RegistrationDefaultGroupHook (ORDER nach RegistrationUserHook), GroupService.update, GroupProjection.push
  • CIAS/cias-registration – RegistrationService.provision (Hook onCompleted)
  • CIAS/cias-iam-api – GroupManagementPort.setDefault; CIAS/cias-iam-keycloak – KeycloakGroupAdapter (/default-groups)
  • CIAS/cias-authorization – GroupReconciliationService.syncMembers
  • CIAS/cias-authorization – db/migration V5__cias_group_default.sql
  • CIAS/cias-authorization/docs/adr – ADR-017, ADR-034
Suchen