Worum es geht
„Attribut“ heißt in CIAS: eine benannte Angabe zu einer Person, etwa department = Einkauf oder projects = alpha, beta. Solche Angaben können an drei Stellen liegen, und die Stelle entscheidet, wer sie liest und wer sie schreiben darf.
Die drei Speicher
| CIAS-Attribute | Profilattribute | Attribute je Mandant | |
|---|---|---|---|
| liegt in | Datensatz in CIAS | Konto in Keycloak | CIAS, je Person und Mandant |
| wirkt auf Anfragen | nein | ja, über das Token | ja, ersetzen den Wert aus dem Token |
| lesen | Plattform-Administrator, im Datensatz | Plattform-Administrator | Plattform-Administrator oder Personen im selben Mandanten |
| schreiben | Plattform-Administrator, ersetzt alle | Plattform-Administrator, je Schlüssel | laut Delegation des Attributs und Obergrenze |
| Endpunkt | POST /cias/admin/users/{id}/attributes | GET / POST /cias/admin/users/{id}/profile-attributes | GET / POST /cias/admin/users/{id}/tenant-attributes?tenantKey=… |
Jeder Speicher
Wann: Die Fachlichkeit will sich etwas merken, das keine Rechte berührt.
POST /cias/admin/users/{id}/attributes mit { "attributes": { "department": "Einkauf" } }. Der Aufruf ersetzt die ganze Menge: Was nicht mitgeschickt wird, ist danach weg. Gelesen werden die Werte mit dem Datensatz, GET /cias/admin/users/{id}. Die Registrierung legt ihre übrigen Formularfelder hier ab.
Ergebnis: Nur für Plattform-Administratoren. Keine Prüfung gegen einen Katalog.
Wann: Ein Modul braucht einen Wert im Token, etwa projects für einen Attributfilter.
POST /cias/admin/users/{id}/profile-attributes mit { "attributes": { "projects": "alpha,beta" } }. Nur die genannten Schlüssel ändern sich; ein leerer Wert entfernt den Schlüssel. CIAS schreibt jeden Schlüssel einzeln nach Keycloak und liest danach zurück, was Keycloak tatsächlich hält. Die Antwort ist dieser gelesene Stand.
Ergebnis: Nur für Plattform-Administratoren. Der Wert wirkt mit dem nächsten Token der Person.
Wann: Ein Wert soll nur in einem Mandanten gelten, etwa areas = nord in nordbau und areas = sued in suedlogistik.
POST /cias/admin/users/{id}/tenant-attributes?tenantKey=nordbau mit { "attributes": { "areas": ["nord"] } }. Je Schlüssel ersetzt die Liste die bisherigen Werte, eine leere Liste leert den Schlüssel. CIAS prüft alle Schlüssel, bevor es irgendetwas schreibt: Fällt einer durch, wird nichts geschrieben.
Ergebnis: Die Antwort ist alles, was die Person danach in diesem Mandanten hält.
Wie Attribute je Mandant bei einer Anfrage wirken, steht unter Ein Wert pro Person oder pro Mandant.
Wer ein Attribut je Mandant schreiben darf
Hier entscheidet nicht nur die Rolle „Plattform-Administrator“, sondern eine Prüfung je Attribut:
-
CIASangemeldetIst der Aufrufer angemeldet?↳ nein 403
-
CIASKatalogHat ein Modul das Attribut angemeldet?↳ nein 403, auch für Plattform-Administratoren
-
CIASPlattform-AdministratorDann erlaubt, auch für zurückgezogene Attribute
-
CIASzurückgezogen?Meldet das Modul das Attribut noch an?↳ nein 403
-
CIASDelegationHat der Aufrufer eine der Rollen, an die das Attribut delegiert ist?↳ nein 403
-
CIASObergrenzeLiegt jeder geschriebene Wert in seinem eigenen Wert in diesem Mandanten?↳ nein 403
- Werte werden geschrieben
Alle Ablehnungen sehen gleich aus: 403 cias.user.administration-denied. Welches Attribut und welche Prüfung, steht im Log.
- Die Delegation je Attribut legt die Installation fest, mit einer Bean
DeclaredAttributeDelegation: Attribut → Rollen, die es schreiben dürfen. Ohne diese Bean dürfen nur Plattform-Administratoren schreiben. Eine REST-Schnittstelle zum Ändern gibt es nicht; lesen lässt sie sich unterGET /cias/admin/attributesim FeldassignableBy. Siehe Wer ein Attribut schreiben darf. - Die Obergrenze vergleicht wie der Filter: an Kommas getrennt,
*heißt alles. Wer selbstareas = nord, westhat, darfnordvergeben, aber nichtsuedund nicht*. Leeren ist immer erlaubt, wenn die Delegation zustimmt. Siehe Die Obergrenze.
Lesen
GET /cias/admin/users/{id}/tenant-attributes?tenantKey=nordbau liefert alle Werte der Person in diesem Mandanten, als Listen. Lesen dürfen Plattform-Administratoren und Personen, deren eigener Mandant nordbau ist. Die Werte anderer Mandanten bleiben unlesbar.