CodamAIDocs
Themafertig

Selbstregistrierung

Eine Person registriert sich ohne Anmeldung über das öffentliche Formular. Der vollständige Ablauf mit Freigabe und neuem Mandanten.

Ausprägungen
neue AdresseAdresse schon bekanntmit Freigabeohne Freigabeneuer Mandant (CREATE_NEW)ohne Mandant (NONE)

Worum es geht

Die Selbstregistrierung ist der öffentliche Weg zu einem Konto: Jemand füllt ein Formular aus, ohne angemeldet zu sein. In der Variante SELF_SERVICE gründet die Person dabei typischerweise einen neuen Mandanten für ihre Firma und wird dessen erste Person.

Der Ablauf

sequenceDiagram
    participant B as Benutzer
    participant C as CIAS
    participant K as Keycloak
    participant M as E-Mail
    B->>C: POST /cias/registration/self<br/>E-Mail, Vorname, Nachname, Firma
    C->>C: Drosselung, Felder prüfen
    C->>K: Konto deaktiviert anlegen
    C->>M: Mail mit Bestätigungslink
    C-->>B: 202 accepted
    B->>C: klickt den Link (POST /verify)
    alt Freigabe nötig
        C->>M: „Ihre Registrierung wird geprüft“
        Note over C: wartet auf einen Plattform-Administrator
    end
    C->>K: Konto freischalten
    C->>K: Organisation für den neuen Mandanten
    C->>C: Mandant anlegen
    C->>K: Mitgliedschaft und Gründerrollen
    C->>M: Willkommensmail

Das Formular

Welche Felder es gibt, liefert GET /cias/registration/flows/SELF_SERVICE/form. In der ausgelieferten Konfiguration von cias-runtime:

FeldPflichtWofür
emailjadie Adresse, zugleich das Konto
firstName, lastNameneinName am Konto
companyjaName des neuen Mandanten und Quelle seines Schlüssels
applicationneinaus welcher Oberfläche die Person kommt. Wählt Mail-Vorlage und Links

Dazu kann die Anfrage Einwilligungen (consents) und eine Sprache (locale) mitschicken. Ein Passwortfeld gibt es nicht. Felder, die der Ablauf nicht kennt, werden abgelehnt.

Anfrage
POST /cias/registration/self
{
  "email": "anna@nordbau.example",
  "fields": { "firstName": "Anna", "lastName": "Berg", "company": "Nordbau GmbH" },
  "locale": "de"
}
Antwort
202
{ "status": "accepted" }

Die Varianten

Was die Selbstregistrierung je nach Lage tut

Wann: Zu der Adresse gibt es noch kein Konto.

CIAS legt das Konto in Keycloak deaktiviert und unbestätigt an und schickt die Mail VERIFY_EMAIL mit dem Link.

Ergebnis: Siehe E-Mail bestätigen.

Wann: Die Adresse gehört schon zu einem aktiven, bestätigten Konto.

CIAS legt kein neues Konto an und ändert am bestehenden nichts, auch nicht das Passwort. Statt der Bestätigungsmail bekommt die Person eine andere Mail. Die Antwort an das Formular ist dieselbe wie bei einer neuen Adresse.

Ergebnis: Siehe Die E-Mail ist das Konto.

Wann: Der Ablauf verlangt eine Freigabe (approval-required: true).

Nach dem Klick geht der Vorgang nach PENDING_APPROVAL, und die Person bekommt die Mail APPROVAL_PENDING. Erst wenn ein Plattform-Administrator genehmigt, geht es weiter. In cias-runtime ist die Freigabe standardmäßig an (CIAS_SELF_SERVICE_APPROVAL), im Hub standardmäßig aus.

Ergebnis: Siehe Freigabe durch einen Administrator.

Wann: approval-required: false

Nach dem Klick beginnt sofort die Bereitstellung.

Ergebnis: Wenige Sekunden nach dem Klick kommt die Willkommensmail.

Wann: Die ausgelieferte Einstellung für SELF_SERVICE.

Aus dem Feld company entsteht der Mandantenschlüssel: Umlaute und Akzente werden zu Grundbuchstaben, alles klein, andere Zeichen werden zu -, höchstens 48 Zeichen. Aus „Nordbau GmbH“ wird nordbau-gmbh. Ist der Schlüssel schon vergeben, versucht CIAS nordbau-gmbh-2 bis -20. Bei der Bereitstellung entstehen dann Organisation und Mandant, und die Person wird Gründerin mit den Gründerrollen.

Ergebnis: Siehe Woher der Mandant kommt und Startrollen als Regelwerk.

Wann: Eine Installation stellt tenant-assignment: NONE ein.

Es entsteht kein Mandant. Die Person bekommt die Rollen der Situation TENANTLESS.

Ergebnis: Das Feld company braucht es dann nicht.

Schutz des öffentlichen Formulars

Weil das Formular ohne Anmeldung erreichbar ist, antwortet es immer gleich und ist gedrosselt: höchstens eine bestimmte Zahl von Versuchen je Adresse in einem Zeitfenster (in cias-runtime 10 in 10 Minuten). Details unter Schutz der öffentlichen Endpunkte.

Weiter

Quellen im Code und in der Wissensdatenbank
  • CIAS/cias-registration – RegistrationController (/self), RegistrationService (register, verify, provision, resolveTenant, throttle), SlugTenantKeyFactory
  • CIAS/cias-runtime – application.yml (flows.SELF_SERVICE), CiasRegistrationRoleConfiguration
  • hub-backend – application.yaml (flows.SELF_SERVICE), CiasRegistrationSupportConfiguration
  • CIAS/cias-registration/docs/adr – ADR-011, ADR-012, ADR-014
Suchen