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:
| Situation | tritt ein, wenn | Grundeinstellung |
|---|---|---|
TENANT_FOUNDER | die Registrierung einen neuen Mandanten gründet (CREATE_NEW) | tenant-owner, tenant-admin, tenant-user (Client-Rollen) |
TENANT_MEMBER | die Person einem bestehenden Mandanten beitritt | tenant-user (Client-Rolle) |
TENANTLESS | die 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
-
CIASRegel des MandantenGibt es für diesen Mandanten und diese Situation eine Regel? Dann gilt nur sie
-
CIASRegel der InstallationSonst: Gibt es eine Regel ohne Mandant für diese Situation?
-
CIASGrundeinstellungSonst: die Bean
RegistrationRoles - Die Startrollen stehen fest. Danach dürfen Hooks sie noch ändern
Die drei Stufen
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.
Installation, TENANT_MEMBER: tenant-user, report-read
Mandant nordbau, TENANT_MEMBER: report-readNeues Mitglied in nordbau: report-read
Neues Mitglied in suedlogistik: tenant-user, report-readZwei Autoritäten
| Regel der Installation | Regel des Mandanten | |
|---|---|---|
| Wer schreibt sie | Plattform-Administrator | Mandanten-Administration, laut Delegation |
| Für wen gilt sie | alle Mandanten ohne eigene Regel | nur diesen Mandanten |
| Welche Rollen | alle aus dem Katalog | nur mandantenbezogene, delegierte, selbst gehaltene |
| Beim Anwenden geprüft | nein | ja, 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.