CodamAIDocs
Themafertig

Startrollen als Regelwerk

Welche Rollen eine neue Person bekommt, entscheidet ein Regelwerk je Situation (Gründer, Mitglied, ohne Mandant). Wer Regeln schreiben darf und warum die Mandantenregel ersetzt statt ergänzt.

Ausprägungen
TENANT_FOUNDERTENANT_MEMBERTENANTLESSGrundeinstellung der Installation (Bean)Regel der InstallationRegel des Mandanten (ersetzt)Delegation beim Anwenden erneut geprüft

Worum es geht

Wer sich registriert, braucht von Anfang an ein paar Rollen, sonst kann er nach dem ersten Login nichts tun. Welche das sind, legt kein fester Code fest, sondern ein Regelwerk. Es kennt drei Situationen:

Situationtritt ein, wennGrundeinstellung
TENANT_FOUNDERdie Registrierung einen neuen Mandanten gründet (CREATE_NEW)tenant-owner, tenant-admin, tenant-user (Client-Rollen)
TENANT_MEMBERdie Person einem bestehenden Mandanten beitritttenant-user (Client-Rolle)
TENANTLESSdie Registrierung keinen Mandanten hat (NONE)user (Realm-Rolle)

Die Situation hängt nur an der Mandantenzuordnung, nicht an der Variante. Eine Einladung durch eine Mandanten-Administratorin ist also TENANT_MEMBER, eine Selbstregistrierung mit CREATE_NEW ist TENANT_FOUNDER.

Woher die Rollen kommen

rolesFor(Situation, Mandant)
  1. CIAS
    Regel des Mandanten
    Gibt es für diesen Mandanten und diese Situation eine Regel? Dann gilt nur sie
  2. CIAS
    Regel der Installation
    Sonst: Gibt es eine Regel ohne Mandant für diese Situation?
  3. CIAS
    Grundeinstellung
    Sonst: die Bean RegistrationRoles
  4. Die Startrollen stehen fest. Danach dürfen Hooks sie noch ändern

Die drei Stufen

Grundeinstellung, Regel der Installation, Regel des Mandanten

Wann: Keine gespeicherte Regel passt.

Die Bean RegistrationRoles im Code der Anwendung. cias-runtime und der Hub liefern sie mit: Gründer tenant-owner, tenant-admin und tenant-user, Mitglied tenant-user, ohne Mandant user. Die Gründerin bekommt alle drei, damit sie ihren Mandanten ohne Plattform-Administrator führen kann: Einladen verlangt tenant-admin, und weitergeben kann sie nur, was sie selbst hält. Ist die Registrierung eingeschaltet und fehlt die Bean, startet die Anwendung nicht. Eine eingebaute Standardmenge gibt es nicht.

Wann: Ein Plattform-Administrator schreibt eine Regel ohne Mandant.

PUT /cias/admin/registration-rules/{situation} mit { "roles": [ { "key": "…", "level": "MODULE" } ] }. Jede Rolle muss im Rollenkatalog stehen und darf nicht stillgelegt sein. Die Regel gilt für alle Mandanten, die keine eigene haben.

Wann: Eine Mandanten-Administratorin will für ihren Mandanten andere Startrollen.

Derselbe Endpunkt, aufgerufen mit einem Token, das einen Mandanten trägt. Die Regel gilt nur für diesen Mandanten. Jede Rolle muss mandantenbezogen sein, und alle Rollen müssen über eine Rolle delegiert sein, die die Autorin selbst hat. Außerdem muss sie jede Rolle selbst halten (Obergrenze). CIAS merkt sich, über welche Rolle die Regel geschrieben wurde.

Ergebnis: Die Regel ersetzt die der Installation für diesen Mandanten.

level ist MODULE für eine Client-Rolle des eigenen Clients oder REALM für eine Realm-Rolle. Die Angabe ist Pflicht.

Warum ersetzen statt ergänzen?

Würde die Regel des Mandanten die der Installation nur ergänzen, könnte ein Mandant immer nur mehr vergeben, nie weniger. „Bei uns bekommen neue Mitglieder zunächst nur Leserechte“ wäre dann nicht möglich. Deshalb gilt: Hat der Mandant eine Regel, zählt nur sie.

Regeln
Installation, TENANT_MEMBER:  tenant-user, report-read
Mandant nordbau, TENANT_MEMBER: report-read
Startrollen
Neues Mitglied in nordbau:       report-read
Neues Mitglied in suedlogistik:  tenant-user, report-read

Zwei Autoritäten

Regel der InstallationRegel des Mandanten
Wer schreibt siePlattform-AdministratorMandanten-Administration, laut Delegation
Für wen gilt siealle Mandanten ohne eigene Regelnur diesen Mandanten
Welche Rollenalle aus dem Katalognur mandantenbezogene, delegierte, selbst gehaltene
Beim Anwenden geprüftneinja, die Delegation

Delegation beim Anwenden

Eine Regel des Mandanten wird nicht nur beim Schreiben geprüft, sondern bei jeder Registrierung, die sie anwendet. CIAS fragt dann den Katalog: Darf die Rolle, über die die Regel geschrieben wurde, diese Rollen noch weitergeben?

Hat die Installation die Delegation inzwischen entzogen, wendet CIAS die Regel nicht an und vergibt auch keine verkleinerte Menge. Die Registrierung wird nicht abgeschlossen, und im Log steht, welche Regel nicht mehr gedeckt ist. Die Mandanten-Administration schreibt die Regel dann neu oder löscht sie.

Hooks und Obergrenze

Nach dem Regelwerk darf ein Hook mit onAssignInitialRoles die Menge noch ändern. CIAS prüft danach nur, dass es jede Rolle gibt. Was das Regelwerk vergibt, vergibt die Installation, nicht eine einzelne Person. Die Obergrenze gilt deshalb beim Schreiben einer Regel, nicht beim Vergeben.

Weiter

Quellen im Code und in der Wissensdatenbank
  • CIAS/cias-registration – RegistrationSituation, RegistrationRoles, RegistrationRoleRule, RegistrationRoleRuleService (rolesFor, qualifyingRole, requireStillDelegated), RegistrationRoleRuleController, GrantedRole
  • CIAS/cias-registration – V2__cias_registration_role_rule.sql, ConferralCeilingPort
  • CIAS/cias-runtime – CiasRegistrationRoleConfiguration; hub-backend – CiasRegistrationSupportConfiguration
  • CIAS/cias-registration/docs/adr – ADR-029; CIAS/cias-authorization/docs/adr – ADR-043
Suchen