CodamAIDocs
Themafertig

Wie eine Rolle aus dem Code ins Token kommt

Der ganze Weg: Deklaration im Modul, Katalog, Anlage in Keycloak, Vergabe, Claim im Token.

Ausprägungen
Mandantenrolle in einem dynamischen MandantenRolle über eine GruppeStartrolle einer Registrierung

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

Die Stationen einer Rolle
  1. 1
    Generator
    schreibt beim Build aus dem Modell die Rolle order-edit in die Deklaration des Moduls
  2. 2
    CIAS→Keycloak
    Abgleich: liest die Deklaration und legt die Client-Rolle auf cdms-backend an
  3. 3
    CIAS
    Katalog: trägt sie ein, Scope TENANT, Eigentümer cdms, Delegation aus der Installation
  4. 4
    Admin→CIAS
    Vergabe: Anna vergibt order-edit an Ben in nordbau
  5. 5
    CIAS→Keycloak
    Eintrag: Ben wird Mitglied der Gruppe cdms-backend:order-edit in der Organisation nordbau
  6. 6
    Keycloak
    Token: beim nächsten Anmelden oder Erneuern steht die Rolle im Organisations-Claim
  7. 7
    Filterkette
    Auslesen: nimmt für nordbau die Rollen des eigenen Clients aus dem Claim
    Ergebnis: order-edit steht im RequestContext, CDMS erlaubt das Bearbeiten
StationWas schiefgehen kannThema
DeklarationModul nicht lesbar, Deklaration abgelehntModule melden ihre Rollen an
AbgleichKeycloak nicht erreichbar → Katalog bleibt unverändertDer Abgleich mit Keycloak
KatalogRolle stillgelegt → keine neue VergabeDer Rollenkatalog
Vergabekeine Delegation, falscher Mandant, Obergrenze, Mandant ohne OrganisationEine Rolle vergeben
Tokenaltes Token trägt die Rolle noch nichtToken erneuern
AuslesenRolle eines anderen Clients, oder Anfrage läuft in einem anderen MandantenEffektive Rollen: global oder im Mandanten

Andere Wege ins Token

Nicht jede Rolle kommt über eine Vergabe

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

Quellen im Code und in der Wissensdatenbank
  • CDMS/cdms-generator – RoleRegistryProcessor; commons – IdentityRegistryInterface
  • CIAS/cias-authorization – RoleReconciliationService (provision, write), RoleAssignmentService (grant, pushGrant), ConferralCeiling
  • CIAS/cias-iam-keycloak – KeycloakRoleAdapter (defineRole, assignInOrganization)
  • CIAS/cias-authentication – KeycloakOrganizationClaimReader, EffectiveRoles, TokenParser.admit
  • CIAS/cias-registration – RegistrationService.grantRoles
Suchen