Worum es geht
Jeder Mandant hat einen Schlüssel, zum Beispiel nordbau oder stadtwerke-nord. Der Schlüssel ist der Name, unter dem das ganze System den Mandanten kennt:
- Er steht im Token, als Attribut
tenantoder als Alias der Organisation. - Er ist der Name der Datenbank des Mandanten.
- Er ist das, was das Mandanten-Tor bei CIAS nachfragt.
Daneben hat ein Mandant einen Anzeigenamen (displayName), zum Beispiel „Nordbau GmbH“. Den lesen Menschen. Fehlt er, zeigt CIAS den Schlüssel.
Die Regeln
| Regel | Grund |
|---|---|
nur Kleinbuchstaben a–z, Ziffern 0–9 und Bindestrich - | Das sind die Zeichen, die CDMS als Datenbanknamen annimmt. CDMS prüft sie direkt vor dem CREATE DATABASE noch einmal |
| mindestens ein Zeichen | ein leerer Name bezeichnet nichts |
| höchstens 64 Zeichen | MySQL erlaubt für einen Namen nicht mehr |
nicht system und nicht single | Diese Namen nutzt CDMS selbst: system ist die System-Datenbank, single die eine Datenbank im Betrieb SINGLE. Ein Mandant mit so einem Namen landete dort |
| eindeutig in der ganzen Installation | eine Datenbank je Mandant; die Tabelle cias_tenant erzwingt das mit einer Eindeutigkeitsregel |
| unveränderlich | siehe oben; es gibt keinen Endpunkt, der ihn ändert |
CIAS prüft diese Regeln schon, wenn ein Mandant angelegt wird, nicht erst bei der Einrichtung der Datenbank. Sonst gäbe es womöglich schon eine Organisation in Keycloak, bevor der Name an der Datenbank scheitert.
| Schlüssel | Ergebnis |
|---|---|
nordbau | gültig |
stadtwerke-nord-2 | gültig |
system | ungültig, reserviert |
Nordbau | ungültig, Großbuchstabe |
nord_bau | ungültig, Unterstrich |
müller | ungültig, Umlaut |
| 65 Zeichen lang | ungültig, zu lang |
Ein ungültiger Schlüssel beim Anlegen ergibt 400 cias.tenancy.invalid-request, und die Meldung sagt, welche Regel verletzt ist. Ein bereits vergebener ergibt 409 cias.tenancy.key-already-used.
Anzeigename statt Umbenennen
Firmen ändern ihren Namen. Dafür ist der Anzeigename da: Er darf alles enthalten, auch Umlaute und Leerzeichen, und er ist nicht Teil einer Datenbank. Aus „Nordbau GmbH“ kann später „Nordbau Holding GmbH“ werden, der Schlüssel bleibt nordbau.
Über die Verwaltungs-API lässt sich der Anzeigename beim Anlegen setzen. Einen eigenen Endpunkt zum Ändern gibt es nicht.
Wie der Schlüssel bei einer Selbstregistrierung entsteht
Bei einer Selbstregistrierung füllt eine Person ein Formular aus. Nach einem Datenbanknamen fragt das Formular nicht. Deshalb bildet CIAS den Schlüssel selbst, wenn weder die Konfiguration des Ablaufs noch ein Hook einen nennt.
-
CIASQuelle wählenFeld
companyausgefüllt? Sonst die Domain der E-Mail-Adresse ohne Endung↳ nein keine Quelle → Registrierung scheitert mit einem Konfigurationsfehler -
CIASUmformenAkzente weg, klein schreiben, alle anderen Zeichen zu
-, höchstens 48 Zeichen↳ nein nichts Brauchbares übrig → Konfigurationsfehler -
CIASFrei?Gibt es den Schlüssel schon, oder ist er reserviert? Dann
-2,-3… bis-20anhängen. Aus der Firma „System“ wird sosystem-2↳ nein alle vergeben → Konfigurationsfehler - Schlüssel für den neuen Mandanten
Wann: Das Formular enthält company: "Café Ruiz & Söhne".
Akzente werden entfernt, nicht umschrieben: aus é wird e, aus ö wird o, nicht oe. & und Leerzeichen werden zu einem einzigen Bindestrich.
Ergebnis: cafe-ruiz-sohne
Wann: Kein Firmenname, Adresse anna@muster-bau.de.
Genommen wird die Domain ohne ihre letzte Endung. Der Teil vor dem @ wird nie verwendet: info oder d.mertins wären entweder bei vielen Kunden gleich oder nach einer einzelnen Person benannt.
Ergebnis: muster-bau; aus example.co.uk würde example-co
Wann: muster-bau gibt es bereits.
CIAS probiert muster-bau-2, dann muster-bau-3 und so weiter bis -20. Deshalb ist der Stamm auf 48 Zeichen begrenzt: So passt der Zusatz noch in die 64.
Ergebnis: muster-bau-2
Wann: Eine Installation will eine andere Regel, etwa ue statt u für ü, oder eine Kundennummer.
Sie stellt eine eigene Bean vom Typ TenantKeyFactory bereit. CIAS nutzt dann diese statt der eingebauten. Der Zusatz -2 bis -20 und die Prüfung der Regeln laufen trotzdem.
Ergebnis: Liefert die eigene Regel einen ungültigen Schlüssel, scheitert die Registrierung mit einem Konfigurationsfehler.
Geprüft wird „frei?“ bei der Registrierung, angelegt wird der Mandant aber erst, wenn die Person ihre Adresse bestätigt hat, also Minuten oder Tage später. Nehmen zwei Registrierungen in dieser Zeit denselben Schlüssel, scheitert die zweite an der Eindeutigkeitsregel. CIAS reserviert keinen Namen für eine Registrierung, die vielleicht nie bestätigt wird.
Fallen
Weiter
- Einen Mandanten anlegen und bereitstellen
- Wie die Registrierung den Mandanten wählt: Woher der Mandant kommt
- Was CDMS mit dem Schlüssel macht: Welche Datenbank? Das Persistenzziel