Worum es geht
Eine Rolle entziehen heißt: Eine Vergabe endet, bevor ihre Zeit abgelaufen ist. Du entziehst immer eine bestimmte Vergabe, erkennbar an ihrer ID, nicht „die Rolle tenant-user von Anna“. Die ID findest du in der Liste der Vergaben einer Person oder eines Mandanten, siehe Eine Rolle vergeben.
Der Aufruf
POST /cias/admin/role-assignments/a41f…/revoke
Authorization: Bearer <Token von Anna, tenant-admin in nordbau>
{ "reason": "hat die Abteilung gewechselt" }HTTP 200
{ "id": "a41f…", "roleKey": "tenant-user", "tenantKey": "nordbau",
"state": "REVOKED", … }Der Grund ist Pflicht. Fehlt er, antwortet CIAS mit 400. Er landet im Event Revoked und damit im Audit.
Wer entziehen darf
Entziehen folgt denselben Regeln wie Vergeben:
- Ein Plattform-Administrator darf jede Vergabe entziehen.
- Alle anderen nur eine Vergabe einer Mandantenrolle, die an eine ihrer Rollen delegiert ist, im eigenen Mandanten, und nur, wenn sie die Rolle dort selbst halten.
Wer eine Rolle nicht vergeben dürfte, darf sie auch nicht entziehen: 403 cias.authorization.denied. Eine stillgelegte Rolle lässt sich dagegen noch entziehen, nur nicht mehr vergeben.
Der Ablauf
sequenceDiagram
participant A as Anna
participant C as CIAS
participant K as Keycloak
participant DB as CIAS-Datenbank
A->>C: POST …/a41f…/revoke {reason}
C->>C: Vergabe laden, Rechte prüfen
C->>K: Person verlässt Gruppe cias-backend:tenant-user in nordbau
C->>DB: Vergabe := REVOKED
C-->>A: 200, Event Revoked
Die Reihenfolge ist die umgekehrte wie beim Vergeben. Die Regel dahinter ist dieselbe: Was Zugang nimmt, kommt zuerst, was Zugang gibt, kommt zuletzt. Egal welche Hälfte scheitert, die Person steht am Ende eher ohne Rolle da als mit einer, die niemand wollte.
Varianten
Wann: Die Vergabe ist ACTIVE.
CIAS trägt die Rolle in Keycloak aus und setzt die Vergabe auf REVOKED.
Ergebnis: Event Revoked mit Grund und dem Mandanten des Aufrufers.
Wann: Die Vergabe ist SCHEDULED, ihr Beginn liegt in der Zukunft.
In Keycloak ist nichts eingetragen, also ruft CIAS Keycloak nicht auf. Die Vergabe wird REVOKED und beginnt nie.
Ergebnis: Der Zeitgeber fasst sie danach nicht mehr an.
Wann: Die Vergabe ist bereits REVOKED, etwa weil die erste Antwort verloren ging.
CIAS ändert nichts und antwortet wie beim ersten Mal.
Ergebnis: Ein Wiederholen ist gefahrlos.
Wann: Die Vergabe ist EXPIRED.
Eine abgelaufene Vergabe wird nicht nachträglich entzogen. „Abgelaufen“ und „entzogen“ sind verschiedene Antworten auf die Frage, warum jemand ein Recht verlor.
Ergebnis: 409 cias.authorization.invalid-state
Wann: Zu der ID gibt es keine Vergabe.
CIAS ändert nichts.
Ergebnis: 404 cias.authorization.assignment-not-found
Was in Keycloak passiert
| Vergabe | In Keycloak |
|---|---|
Realm- oder Client-Rolle, Scope PLATFORM | die Rolle wird direkt vom Konto entfernt |
| Mandantenrolle | die Person verlässt die Gruppe <client>:<rolle> in der Organisation |
Bei einer Mandantenrolle bleibt die Gruppe mit ihrer Rolle bestehen. Würde CIAS die Rolle von der Gruppe entfernen, verlören sie alle anderen Mitglieder des Mandanten auf einmal.
Wann es wirkt
-
CIASCIASRolle in Keycloak ausgetragen, Vergabe
REVOKED -
KeycloakTokenDas Token, das die Person gerade hat, trägt die Rolle noch, bis es abläuft oder erneuert wird
-
CDMSAnwendungprüft die Rollen aus dem Token der Anfrage↳ nein 403 erst mit dem neuen Token
- Die Person kann die Rolle nicht mehr nutzen
Ein Entzug wirkt also nicht in derselben Sekunde. Wie lange es dauert, hängt von der Laufzeit des Tokens ab. Mehr unter Warum ein Rechteentzug verzögert wirkt. Soll eine Person sofort nichts mehr tun können, sperrt man ihr Konto, siehe Sperren, entsperren, schließen.