CodamAIDocs
Themafertig

Die Verwaltungsoberfläche

Die Seiten für Benutzer, Mandanten, Rollen, Gruppen, Registrierungen und Mail-Vorlagen, und welche CIAS-Abläufe sie auslösen.

Ausprägungen
BenutzerMandantenRollenGruppenRegistrierungenMail-Vorlagenohne Plattform-Administrator-RolleKonto ohne Mandant

Worum es geht

CIAS hat eine Verwaltungs-API unter /cias/admin/…. Die Oberfläche, mit der Menschen sie bedienen, ist der Bereich Zugriff im Hub (hub-frontend), unter den Adressen /access/…. Dort legst du Mandanten an, sperrst Personen, vergibst Rollen, pflegst Gruppen, arbeitest offene Registrierungen ab und passt Mail-Texte an.

Das CIAS-Portal (cias-frontend) hat keine eigenen Verwaltungsseiten. Seine Navigation nennt weitere Bereiche nur ausgegraut, bedienen kannst du die Verwaltung im Hub. Was das Portal zeigt, steht unter Das CIAS-Portal.

Die Seitenkarte

flowchart LR
    NAV["Hub<br/>Bereich „Zugriff“"] --> T["/access/tenants<br/>Mandanten"]
    NAV --> U["/access/users<br/>Benutzer"]
    NAV --> R["/access/registrations<br/>Registrierungen"]
    NAV --> M["/access/mail-templates<br/>Mail-Vorlagen"]
    NAV --> G["/access/groups<br/>Gruppen"]
    NAV --> RO["/access/roles<br/>Rollen"]
    T --> TD["/access/tenants/{key}<br/>ein Mandant"]
    U --> UD["/access/users/{id}<br/>eine Person"]
    TD -. "Benutzer des Mandanten" .-> U

/access allein leitet auf die Benutzerliste weiter. Die Reihenfolge im Menü ist Mandanten, Benutzer, Registrierungen, Mail-Vorlagen, Gruppen, Rollen.

Der Weg eines Klicks

Zwischen Browser und CIAS steht der BFF des Hubs, der Server-Teil der Oberfläche (siehe Sitzung im BFF und Cookies). Jede Verwaltungsseite ruft eine Route unter /api/hub/… auf, und diese Route ruft CIAS.

Ein Klick auf „Sperren“ in der Benutzerliste
  1. Frontend
    Menü
    Hat die Sitzung die Rolle platform-admin?
    ↳ nein Bereich „Zugriff“ fehlt im Menü
  2. BFF
    BFF-Route
    Gültiges Access-Token und Rolle platform-admin unter allen Rollen der Person?
    ↳ nein 401 oder 403 „Rolle fehlt“, CIAS wird nicht gefragt
  3. CIAS
    Verwaltungs-API
    Ist die Person Plattform-Administrator?
    ↳ nein 403
  4. CIAS
    Fachliche Regel
    Ist der Schritt im aktuellen Zustand erlaubt?
    ↳ nein 409 mit Fehlerschlüssel, die Seite zeigt den Text dazu
  5. CIAS sperrt, die Liste lädt neu

Der BFF schickt das Access-Token der Sitzung als Authorization: Bearer … mit. Für seine eigene Prüfung liest er die Realm-Rollen aus dem Token und die Client-Rollen aus dem Userinfo-Endpunkt von Keycloak. Kann er die Rollen nicht ermitteln, antwortet er 502, nicht 403.

Wer was sieht

Konto braucht einen Mandanten und hat keinen?Rolle platform-admin?Was die Person im Hub sieht
ja–Leeres Menü, nur Einstellungen und Abmelden. Hinweis „Kein Mandant zugeordnet“
neinneinSteuerung und Verwaltung, kein Bereich „Zugriff“. Eine /access/…-Adresse von Hand zeigt die Fehlermeldung „Rolle fehlt“
neinjaAlle Seiten unter „Zugriff“

Die erste Zeile kommt aus GET /cias/me/tenant, siehe Selbstauskunft. Verlangt die Installation einen Mandanten und die Anfrage hat keinen, würde CIAS fast jede Seite ablehnen. Der Hub zeigt deshalb gleich den Hinweis statt einer Seite voller Fehler.

Der Hub fragt die Rolle platform-admin ab. Welche Rollen CIAS als Plattform-Administrator gelten lässt, stellt die Installation in codamai.cias.platform-administrator-roles ein. Siehe Die Realm-Rollen der Plattform.

Die Seiten

Was jede Seite tut

Wann: /access/tenants und /access/tenants/{key}

Die Liste zeigt jeden Mandanten mit fachlicher Stellung, Bereitstellung, Gültigkeit und der Zahl der Personen mit diesem Heimatmandanten. Mandant anlegen fragt Name, Schlüssel, Typ („Organisation“ = dynamisch, „Statisch“), bei „Organisation“ die Organisation im Identity-Provider (vorbelegt mit dem Schlüssel) und die Gültigkeit. Bearbeiten ändert nur die Gültigkeit. Die Detailseite zeigt alle vier Stellungen nebeneinander. Aktivieren geht erst nach abgeschlossener Bereitstellung. Bei einem gesperrten Mandanten entsperrt derselbe Knopf ihn. Schließen fragt vorher nach.

Ergebnis: Siehe Einen Mandanten anlegen und Mandanten sperren, schließen, Gültigkeit.

Wann: /access/users und /access/users/{id}

Die Liste zeigt alle Personen über alle Mandanten, mit Filter nach Mandant und Status. Knöpfe je Zeile: Aktivieren, Sperren und Schließen (beide mit Grund), Bearbeiten (Anzeigename, Heimatmandant, Gruppen, Projektzugriff). Aus dem IAM übernehmen holt Konten aus Keycloak, die CIAS noch nicht kennt. Die Detailseite zeigt direkt vergebene und über Gruppen geerbte Rollen, Rolle vergeben (mit Mandant bei Mandantenrollen, Ablaufdatum, Grund), Entziehen (mit Grund) und die CIAS-Attribute. Einen Knopf „Benutzer anlegen“ gibt es nicht.

Ergebnis: Siehe Sperren, entsperren, schließen, Eine Rolle vergeben.

Wann: /access/registrations

Die Warteschlange zeigt standardmäßig die offenen Vorgänge: Wartet auf Freigabe, Wartet auf Bestätigung und Fehlgeschlagen. „Alle“ zeigt jeden Zustand. Die Knöpfe hängen am Zustand: Freigeben und Ablehnen (mit Grund) bei „Wartet auf Freigabe“; Erneut einrichten und Verwerfen bei „Fehlgeschlagen“; Freischalten und Verwerfen bei „Wartet auf Bestätigung“.

Ergebnis: Siehe Freigabe durch einen Administrator und Abgebrochene Registrierungen aufräumen.

Wann: /access/mail-templates

Die Seite listet die sieben Mails der Registrierung je Sprache (Deutsch, Englisch) mit ihrer Standardfassung, als „Ausgeliefert“ oder „Eigene Fassung“, darunter die Fassungen einzelner Mandanten. Bearbeiten öffnet einen Editor mit Betreff, Text, Schalter für HTML, den Platzhaltern der Mail (dazu application und flow) und einem optionalen Mandanten. Unbekannte Platzhalter markiert die Seite vor dem Speichern. Zurücksetzen gibt einer Standardfassung wieder den ausgelieferten Text; die Fassung eines Mandanten wird gelöscht, danach gilt für ihn die Standardfassung.

Ergebnis: Siehe Vorlagen bearbeiten.

Wann: /access/groups

Die Liste wird in CIAS gesucht und seitenweise geladen. Gruppe anlegen und Bearbeiten fragen Name, Schlüssel (nach dem Anlegen fest), Beschreibung, Rollen aus dem Katalog und ob es die Standardgruppe ist. Mitglieder nimmst du über eine Personensuche auf oder heraus. Dazu kommen Löschen, Aus dem IAM übernehmen und Mit dem IAM abgleichen. Gruppen mit Modulrollen bekommen einen Hinweis, dass diese Rollen in dynamischen Mandanten nicht greifen.

Ergebnis: Siehe Gruppen und Mitglieder verwalten und Gruppenrollen unter dynamischen Mandanten.

Wann: /access/roles

Der Rollenkatalog, nur zum Lesen, gegliedert nach dem Modul, das die Rolle angemeldet hat, mit Suche und Filtern nach Herkunft und Geltung. Rollen für den Kontextwechsel stehen in einem eigenen Hinweiskasten. Mit den Modulen abgleichen startet den Abgleich und zeigt den Bericht je Modul.

Ergebnis: Siehe Der Rollenkatalog und Der Abgleich mit Keycloak.

Wann: Eine angemeldete Person ohne platform-admin.

Der Bereich „Zugriff“ fehlt im Menü. Ruft sie eine Seite über die Adresse auf, lehnt schon der BFF ab, die Seite zeigt „Fehlende Berechtigung – die Rolle „platform-admin“ ist erforderlich“.

Ergebnis: Keine Daten, keine Aufrufe an CIAS.

Wann: Die Installation verlangt einen Mandanten, und die Anfrage hat keinen.

Das Menü ist leer. Über jeder Seite steht „Kein Mandant zugeordnet“ mit dem angemeldeten Namen. Erreichbar bleiben nur die Einstellungen und das Abmelden.

Ergebnis: Ein Administrator ordnet das Konto einem Mandanten zu, danach genügt eine neue Anmeldung.

Welcher Knopf welchen Aufruf auslöst

Mandanten

KnopfBFF-RouteCIAS-Aufruf
ListeGET /api/hub/identity/tenantsGET /cias/admin/tenants
Mandant anlegenPOST /api/hub/identity/tenantsPOST /cias/admin/tenants, bei Gültigkeit danach POST …/{id}/validity
Aktivieren, Sperren, SchließenPUT …/tenants/{key}/statusPOST /cias/admin/tenants/{id}/activate (bei einem gesperrten Mandanten /resume), /suspend, /close
Gültigkeit speichernPUT …/tenants/{key}/validityPOST /cias/admin/tenants/{id}/validity
Erneut bereitstellenPUT …/tenants/{key}/provisioningPOST /cias/admin/tenants/{id}/retry-provisioning
DetailseiteGET …/tenants/{key}GET /cias/admin/tenants/by-key?key=…, GET /cias/admin/users?tenantKey=…

Die Seiten arbeiten mit dem Schlüssel des Mandanten. CIAS spricht Mandanten über ihre ID an, deshalb liest der BFF vor jeder Änderung den Mandanten über by-key.

Benutzer

KnopfCIAS-Aufruf
ListeGET /cias/admin/users/page (seitenweise, bis alle da sind) und die Gruppen der Personen
Aus dem IAM übernehmenPOST /cias/admin/users/import
AktivierenPOST /cias/admin/users/{id}/reactivate
Sperren, SchließenPOST /cias/admin/users/{id}/suspend, /close, jeweils mit reason
Bearbeiten: AnzeigenamePOST /cias/admin/users/{id}/rename
Bearbeiten: HeimatmandantPOST /cias/admin/users/{id}/tenant
Bearbeiten: GruppenPOST /cias/admin/groups/{key}/members und …/members/remove, nur für die Änderungen
Bearbeiten: ProjektzugriffPOST /cias/admin/users/{id}/profile-attributes mit projects
Detail: Rolle vergebenPOST /cias/admin/role-assignments
Detail: EntziehenPOST /cias/admin/role-assignments/{id}/revoke mit reason
Detail: Attribute speichernPOST /cias/admin/users/{id}/attributes, ersetzt den ganzen Satz

Die E-Mail-Adresse steht im Dialog, lässt sich aber nicht ändern. Sie ist die Anmeldung und gehört Keycloak. Die Schritte im Dialog laufen nacheinander und nicht in einer Transaktion: Scheitert der zweite, ist der erste schon gespeichert. Der BFF liest die Person deshalb am Ende neu und zeigt, was wirklich dasteht.

Der Projektzugriff landet als Profilattribut projects in Keycloak, also im Token. Die Attribute auf der Detailseite sind die freien Schlüssel-Wert-Paare am CIAS-Datensatz. Den Unterschied erklärt Zwei Herkünfte von Attributen.

Registrierungen, Mail-Vorlagen, Gruppen, Rollen

SeiteKnopfCIAS-Aufruf
RegistrierungenListeGET /cias/admin/registrations?state=…
Freigeben, AblehnenPOST /cias/admin/registrations/{id}/approve, /reject mit reason
Erneut einrichtenPOST /cias/admin/registrations/{id}/retry
FreischaltenPOST /cias/admin/registrations/{id}/activate
VerwerfenPOST /cias/admin/registrations/{id}/discard
Mail-VorlagenListe, Speichern, Zurücksetzen, LöschenGET, POST /cias/notification/templates, POST …/{id}/reset, DELETE …/{id}
GruppenListe, Anlegen, Ändern, LöschenGET, POST /cias/admin/groups, PUT, DELETE …/{key}
MitgliederGET, POST …/{key}/members, POST …/{key}/members/remove
Übernehmen, AbgleichenPOST /cias/admin/groups/import, POST /cias/admin/groups/reconcile
RollenKatalogGET /cias/admin/roles, für Auswahllisten GET /cias/admin/roles/page
Mit den Modulen abgleichenPOST /cias/admin/roles/reconcile

Nach dem Verwerfen sagt die Seite, ob die Adresse wieder frei ist. CIAS meldet das mit identityRemoved. Ist das Konto in Keycloak stehen geblieben, läuft eine neue Registrierung mit dieser Adresse darauf.

Für jede angemeldete Person

Zwei Aufrufe laufen für alle, ohne Verwaltungsrolle:

  • Sprache in der Kopfzeile und unter Einstellungen: PUT /cias/me/locale. Die Wahl liegt am Konto und gilt auch für Mails.
  • Mandanten-Hinweis: GET /cias/me/tenant, siehe oben.

Fallen

Weiter

Quellen im Code und in der Wissensdatenbank
  • hub-frontend – app/layouts/default.vue (navSections), app/composables/usePermissions.ts, shared/constants/roles.ts (PLATFORM_ADMIN_ROLE, FRONTEND_ROLES), app/middleware/auth.global.ts
  • hub-frontend – app/pages/access/** (users, tenants, groups, roles, registrations.vue, mail-templates.vue), app/components/access/*Dialog.vue, RoleCatalogue.vue
  • hub-frontend – server/api/hub/identity/**, server/api/hub/admin/registrations/**, server/api/hub/notification/templates/**, server/api/hub/me/tenant.get.ts, server/api/hub/identity/me/locale.*.ts
  • hub-frontend – server/utils/requireRole.ts, effectiveRoles.ts, ciasFetch.ts, mapUser.ts, mapTenant.ts, mapGroup.ts, mapRole.ts
  • CIAS – UserAdminController, TenantAdminController, GroupAdminController, RoleAdminController, RegistrationAdminController, MailTemplateAdminController, UserSelfController
  • CIAS/cias-frontend – app/layouts/default.vue
Suchen