Mandanten
Eine CMI STS 3 Instanz kann seinen Service für mehrere Mandanten anbieten. Es ist nicht nötig, für jeden Mandanten eine eigene CMI STS Instanz zu installieren. Selbiges war mit dem CMI STS in Version 1 und 2 (folgend CMI STS 2) im Prinzip auch möglich, aufgrund eines ungünstigen Verhaltens aber nicht die Praxis.
Sowohl der CMI STS 2 als der CMI STS 3 stellen nach der Anmeldung ein Cookie aus um den Benutzer später wieder zu erkennen. Meldet sich der Benutzer im selben Browser an verschiedene Mandanten an, beispielsweise am Produktiv- und Testsystem, überschreibt der CMI STS 2 sein Cookie immer mit der letzten Anmeldung. Das Arbeiten mit mehreren Mandanten in der selben Browser-Instanz ist so nicht möglich. Die Cookie-Handhabung wurde mit dem CMI STS 3 überarbeitet, so dass das Verwenden mehrere Mandanten in der selben Browser-Instanz möglich ist.
Konfiguration
Es wird zwischen einer allgemeinen Konfiguration und mandanten-spezifischer Konfiguration unterschieden. Wie der CMI STS 3 im allgemeinen Konfigurationsdaten lädt, wird im Abschnitt Konfiguration erläutert. Dieses Kapitel erläutert, wie die mandanten-spezifische Konfiguration angelegt wird.
Mandanten werden in einer benannten Liste in Tenants
konfiguriert. Der Name, bzw. die ID eines Mandanten kann frei gewählt werden. Für jeden Mandanten muss die Eigenschaft CmiPrivateUri
gesetzt werden. Sie gibt an, unter welcher URL der CMI STS die sogenannte OWIN-Private-Schnittstelle des CMI Servers erreichen kann. Für jeden Mandanten müssen weitere Einstellungen wie zum Beispiel Clients und Identity Provider hinterlegt werden. Diese Einstellungen werden in ihren jeweiligen Kapiteln erläutert.
{
//...
"tenants": {
"mandant1": {
"CmiPrivateUri": "http://man1.server.local:10000",
"DisplayName": "Mandant 1",
//... weitere Konfigurationsdaten für den Mandanten
},
"mandant2": {
"CmiPrivateUri": "http://man2.server.local:10000",
"DisplayName": "Mandant 2",
//... weitere Konfigurationsdaten für den Mandanten
}
}
}
CmiPrivateUri
(erforderlich): URL unter der die OWIN-Private-Schnittstelle des CMI Servers kontaktiert werden kann. An welchen Port der CMI Server die OWIN-Private-Schnittstelle bindet, kann in der Regel der Dateimetatool.ini
(Schlüssel[OwinServer]PortPrivate
) entnommen werden, die im Binärverzeichnis des CMI Servers liegt.DisplayName
(optional, Standartwert:null
): Anzeigename für den Mandanten auf der Benutzeroberfläche. Wird kein Anzeigename festgelegt, werden im UI generische Texte angezeigt. Ein Anzeigename ist dann sinnvoll, wenn Benutzer mit mehreren Mandaten arbeiten und die Benutzeroberfläche des CMI STS einen Hinweis geben soll, auf welchen Mandaten der Benutzer gerade Aktionen ausführt.
Ordner für Mandanten-Konfigurationen
Wenn eine JSON-Datei zur Konfiguration verwendet wird und viele Mandanten konfiguriert werden müssen, wird eine einzelne AppSettings-Datei schnell unübersichtlich. Es kann dann für jeden Mandanten eine eigene Datei angelegt werden. Der Dateiname (abzgl. ".json") wird dabei zum Mandantennamen.
Diese Dateien können in einem eigenen Verzeichnis abgelegt werden, das mit der Eigenschaft tenantConfigurationDirectory
konfiguriert werden kann.
Folgende Konfigurationen sind also äquivalent:
appsettings.json
{
//...
"tenants": {
"hauptmandant": {
"CmiPrivateUri": "http://hauptserver:10000",
//...
},
"nebenmandant": {
"CmiPrivateUri": "http://nebenserver:10000",
//...
}
}
}
appsettings.json
{
//...
"tenantConfigurationDirectory": "./tenants"
}
tenants/hauptmandant.json
{
"CmiPrivateUri": "http://hauptserver:10000",
//...
}
tenants/nebenmandant.json
{
"CmiPrivateUri": "http://nebenserver:10000",
//...
}
Die Konfigurationen ergänzen sich gegenseitig. Es ist also möglich, einige Mandanten in der Hauptkonfiguration und andere im tenantConfigurationDirectory
zu pflegen.
Wird derselbe Mandant an beiden Orten beschrieben, überschreiben die Werte im tenantConfigurationDirectory
die Werte der Hauptkonfiguration.
Eine weitere äquivalente Konfiguration ist also:
appsettings.json
{
//...
"tenants": {
"hauptmandant": {
"CmiPrivateUri": "http://hauptserver:10000",
//...
}
}
}
tenants/nebenmandant.json
{
"CmiPrivateUri": "http://nebenserver:10000",
//...
}