CodamAIDocs
Themafertig

Einladung durch den Mandanten-Administrator

Ein Mandanten-Administrator lädt eine Person in den eigenen Mandanten ein. Der Mandant kommt immer aus seinem Token, nie aus dem Payload.

Ausprägungen
neue PersonPerson hat schon ein Konto (Beitritt)Mandant im Payload (wird ignoriert)Aufrufer ohne Mandant → 403

Worum es geht

Eine Mandanten-Administratorin will eine Kollegin in ihren Mandanten holen. Dafür gibt es die Variante TENANT_ADMIN: Sie schickt Adresse und Namen, CIAS verschickt eine Mail mit Link, und wenn die Kollegin den Link einlöst, ist sie Mitglied.

Der Ablauf

sequenceDiagram
    participant A as Admin (Mandant nordbau)
    participant C as CIAS
    participant K as Keycloak
    participant M as E-Mail
    participant B as Benutzer
    A->>C: POST /cias/tenant/registrations<br/>email, firstName, lastName
    C->>C: Rolle tenant-admin? Mandant aus dem Token: nordbau
    C->>K: Konto deaktiviert anlegen (nur bei neuer Adresse)
    C->>M: Mail mit Link
    C-->>A: 202
    M-->>B: Mail
    B->>C: löst den Link ein
    C->>K: freischalten, Mitglied in nordbau, Mitgliedsrollen
    C->>M: Willkommensmail

Die Varianten

Neue oder bekannte Person
neue Person
Adresse ohne Konto
  • Konto wird deaktiviert angelegt
  • Mail VERIFY_EMAIL mit Link
  • nach dem Klick: freischalten, Passwort bei Keycloak setzen
  • Mitglied in nordbau mit den Mitgliedsrollen
Person hat schon ein Konto
Beitritt zu einem weiteren Mandanten
  • kein neues Konto
  • Mail MEMBERSHIP_INVITATION mit Link
  • Passwort und Konto bleiben unberührt
  • nach dem Klick: Mitglied in nordbau, zusätzlich zu den bisherigen Mandanten
Weitere Fälle

Wann: Der Aufruf enthält "tenantKey": "suedlogistik".

CIAS verwirft das Feld, ohne es zu prüfen. Die Einladung gilt für den Mandanten aus dem Token der Einladenden.

Ergebnis: Die Person wird Mitglied in nordbau, nicht in suedlogistik.

Wann: Das Token der aufrufenden Person trägt keinen Mandanten.

Ohne Mandant weiß CIAS nicht, wohin eingeladen wird.

Ergebnis: 403 cias.registration.not-authorized

Wann: Die aufrufende Person hat nicht alle Rollen aus required-caller-roles (ausgeliefert: tenant-admin).

Ergebnis: 403 cias.registration.not-authorized

Was die Einladende angeben muss

Die Felder legt die Konfiguration des Ablaufs fest. In cias-runtime ist nur email Pflicht, firstName und lastName sind freiwillig. Was die Einladende offen lässt, zeigt der Link später als offenes Feld an, siehe Eine Einladung einlösen.

Wie lange der Link gilt, steht ebenfalls in der Konfiguration (token-ttl). In cias-runtime sind es 14 Tage.

Weiter

Quellen im Code und in der Wissensdatenbank
  • CIAS/cias-registration – RegistrationAdminController (POST /cias/tenant/registrations), RegistrationService (register, authorize, resolveTenant, mailPurpose)
  • CIAS/cias-registration – RegistrationRestTest (tenantAdminCannotNameATenant), RegistrationServiceTest
  • CIAS/cias-runtime – application.yml (flows.TENANT_ADMIN)
  • CIAS/cias-registration/docs/adr – ADR-011, ADR-014
Suchen