Worum es geht
Eine Rolle durchläuft mehrere Stationen, bevor sie eine Anfrage erlaubt. Jede Station hat ihr eigenes Thema in diesem Kapitel. Diese Seite zeigt den ganzen Weg an einem Beispiel: Die Rolle order-edit aus einem CDMS-Modell soll Ben im Mandanten nordbau erlauben, Aufträge zu bearbeiten.
Der ganze Weg
sequenceDiagram
participant M as CDMS-Modul
participant C as CIAS
participant K as Keycloak
participant A as Anna (Admin)
participant B as Ben
participant F as Filterkette
Note over M: Build: Generator schreibt order-edit in die Deklaration
C->>M: Deklaration lesen (Bean oder GET /cias/fetch)
M-->>C: roles: order-edit
C->>K: Client-Rolle order-edit auf cdms-backend anlegen
C->>C: Katalog: cdms-backend/order-edit, TENANT, Eigentümer cdms
A->>C: POST /cias/admin/role-assignments (Ben, order-edit, nordbau)
C->>C: Delegation, Mandant, Obergrenze prüfen, Vergabe speichern
C->>K: Ben in Gruppe cdms-backend:order-edit der Organisation nordbau
B->>K: Anmelden oder Token erneuern
K-->>B: Token mit organization.nordbau.resource_access.cdms-backend.roles = [order-edit]
B->>F: Anfrage mit Token
F->>F: Mandant nordbau, effektive Rollen: order-edit
F-->>M: RequestContext mit order-edit
M->>M: Modellrolle prüfen: bearbeiten erlaubt
Die Stationen
-
1Generatorschreibt beim Build aus dem Modell die Rolle
order-editin die Deklaration des Moduls -
2CIAS→KeycloakAbgleich: liest die Deklaration und legt die Client-Rolle auf
cdms-backendan -
3CIASKatalog: trägt sie ein, Scope
TENANT, Eigentümercdms, Delegation aus der Installation -
4Admin→CIASVergabe: Anna vergibt
order-editan Ben innordbau -
5CIAS→KeycloakEintrag: Ben wird Mitglied der Gruppe
cdms-backend:order-editin der Organisationnordbau -
6KeycloakToken: beim nächsten Anmelden oder Erneuern steht die Rolle im Organisations-Claim
-
7FilterketteAuslesen: nimmt für
nordbaudie Rollen des eigenen Clients aus dem ClaimErgebnis:order-editsteht im RequestContext, CDMS erlaubt das Bearbeiten
| Station | Was schiefgehen kann | Thema |
|---|---|---|
| Deklaration | Modul nicht lesbar, Deklaration abgelehnt | Module melden ihre Rollen an |
| Abgleich | Keycloak nicht erreichbar → Katalog bleibt unverändert | Der Abgleich mit Keycloak |
| Katalog | Rolle stillgelegt → keine neue Vergabe | Der Rollenkatalog |
| Vergabe | keine Delegation, falscher Mandant, Obergrenze, Mandant ohne Organisation | Eine Rolle vergeben |
| Token | altes Token trägt die Rolle noch nicht | Token erneuern |
| Auslesen | Rolle eines anderen Clients, oder Anfrage läuft in einem anderen Mandanten | Effektive Rollen: global oder im Mandanten |
Andere Wege ins Token
Wann: der Weg oben
Vergabe in CIAS, Gruppe in der Organisation, Organisations-Claim im Token.
Ergebnis: Die Rolle hat eine Vergabe mit ID, lässt sich befristen und entziehen.
Wann: Ben ist Mitglied der CIAS-Gruppe sachbearbeitung, die order-edit trägt.
CIAS führt die Gruppe und legt sie in Keycloak als Gruppe im Realm an. Die Rolle hängt an der Gruppe, Ben ist Mitglied. Im Token steht sie als globale Client-Rolle.
Ergebnis: Keine Vergabe je Person. Wer die Gruppe verlässt, verliert die Rolle. Siehe Was eine Gruppe ist.
Wann: Ben gründet mit seiner Registrierung einen Mandanten.
Die Registrierung trägt die Startrollen, etwa tenant-owner, direkt in Keycloak ein, im Mandanten der Registrierung. Danach hält CIAS sie als Vergaben fest, mit registration als Vergeber. Das gilt, wenn der Mandant eine Organisation hat; ohne Organisation vergibt die Registrierung global, und es bleibt bei der Rolle in Keycloak.
Ergebnis: Mit Organisation: eine Vergabe wie jede andere, gelistet, entziehbar und für die Obergrenze gezählt. Siehe Startrollen als Regelwerk.
Fallen
Weiter
- Realm-Rolle, Client-Rolle, Organisationsrolle
- Eine Rolle vergeben
- Wie CDMS die Rolle prüft: Modellrollen