CodamAIDocs
Themafertig

Bestehende Konten übernehmen

Wie CIAS Keycloak-Konten, die es noch nicht kennt, als Benutzer übernimmt.

Ausprägungen
unbekanntes aktives Kontounbekanntes, nicht aktives Kontoschon bekanntübersprungen (mehrere Organisationen, Adresse vergeben)

Worum es geht

Nicht jedes Konto entsteht über die Registrierung von CIAS. Manche gab es schon, bevor CIAS eingeführt wurde, andere hat ein Betreiber in der Keycloak-Konsole angelegt. Solche Konten kennt CIAS nicht: Es gibt keinen Benutzerdatensatz, also tauchen sie in keiner Liste auf und lassen sich nicht sperren.

Die Übernahme legt für diese Konten Datensätze an.

Das Mengenbild

flowchart LR
    subgraph K["Konten in Keycloak"]
      direction TB
      A["schon in CIAS bekannt"]
      B["unbekannt, aktiv"]
      C["unbekannt, nicht aktiv"]
      D["unbekannt, aber nicht übernehmbar"]
    end
    A -- "bleibt unverändert" --> R1["alreadyKnown"]
    B -- "Datensatz, ACTIVE" --> R2["activated"]
    C -- "Datensatz, PENDING" --> R3["recorded"]
    D -- "mit Grund" --> R4["skipped"]

Der Ablauf

POST /cias/admin/users/import
  1. 1
    Admin→CIAS
    startet die Übernahme, ohne Inhalt
  2. 2
    CIAS
    Plattform-Administrator?
    sonst 403
  3. 3
    CIAS→Keycloak
    liest alle Konten, seitenweise zu je 200
  4. 4
    CIAS
    Für jedes Konto: schon bekannt? Dann weiter
  5. 5
    CIAS
    Heimatmandant bestimmen, Datensatz anlegen, bei aktivem Konto auf ACTIVE setzen
  6. 6
    CIAS→Admin
    Bericht

Die Übernahme läuft nur auf Knopfdruck, nie von selbst. Die Verwaltungsoberfläche des Hubs bietet dafür einen Knopf in der Benutzerliste.

Was aus jedem Konto wird

Vier Fälle

Wann: Das Konto ist in Keycloak aktiviert und die Adresse bestätigt.

CIAS legt einen Datensatz an und setzt ihn auf ACTIVE. Der Anzeigename kommt aus Vor- und Nachname.

Ergebnis: Zählt als recorded und activated.

Wann: Das Konto ist deaktiviert oder die Adresse nicht bestätigt.

CIAS legt einen Datensatz an, lässt ihn aber auf PENDING.

Ergebnis: Zählt als recorded.

Wann: Zu dem Konto gibt es schon einen Datensatz.

Nichts passiert. Die Übernahme überschreibt keinen bestehenden Datensatz.

Ergebnis: Zählt als alreadyKnown.

Wann: Das Konto lässt sich nicht eindeutig zuordnen.

Zwei Gründe: Das Konto ist Mitglied in mehreren Organisationen, sodass kein eindeutiger Heimatmandant feststeht. Oder die Adresse gehört in CIAS schon zu einem anderen Konto.

Ergebnis: Steht mit Adresse und Grund in skipped.

Der Heimatmandant

Den Heimatmandanten liest CIAS aus der Mitgliedschaft in einer Organisation: Ist das Konto Mitglied in genau einer Organisation, wird deren Alias zum Heimatmandanten. Ohne Organisation bekommt die Person keinen Heimatmandanten.

Der Bericht

Anfrage
POST /cias/admin/users/import
Antwort
{
  "found": 120,
  "recorded": 14,
  "activated": 12,
  "alreadyKnown": 104,
  "skipped": [
    { "email": "ben@example.org", "reason": "belongs to several organizations (nordbau, suedlogistik)" },
    { "email": "cara@example.org", "reason": "…" }
  ]
}
FeldBedeutung
foundKonten in Keycloak
recordedneu angelegte Datensätze, einschließlich der aktivierten
activateddavon gleich auf ACTIVE gesetzt
alreadyKnownschon vorher bekannt
skippednicht übernommen, mit Grund

Jedes Konto wird für sich gespeichert. Bricht ein Lauf ab, startet man ihn einfach noch einmal; bereits übernommene Konten zählen dann als alreadyKnown.

Weiter

Quellen im Code und in der Wissensdatenbank
  • CIAS/cias-user – UserImportService, UserImportUseCase, ImportReport, UserAdminController (import)
  • CIAS/cias-iam-keycloak – KeycloakIdentityAdapter (list), CIAS/cias-iam-api – IamIdentity (isUsable)
  • hub-frontend – server/api/hub/identity/users/import.post.ts
Suchen