Skip to content

Konfiguration

Die Konfiguration erfolgt in der Datei appsettings.json (die Datei befindet sich im Installationsverzeichnis). Die nachfolgenden Unterkapitel beschreiben jeweils einen Toplevel-Eintrag.

Hinweis: Pfadangaben müssen mit doppelte Backslashes geschrieben werden.

Serilog

{
  "Serilog": {
    "MinimumLevel": {
      "Default": "[LEVEL]"
    },
    "WriteTo": [
      {
        "Args": {
          "path": "[PATH]",
          "rollingInterval": "Day"
        },
        "Name": "File"
      },
      {
        "Name": "Console"
      }
    ]
  }
}

Dies ist die Serilog-Konfiguration. Serilog wird insbesondere für das File-Logging gebraucht.

MinimumLevel.Default

Folgende Log-Levels werden unterstützt:

  • Verbose
  • Debug
  • Information
  • Warning
  • Error
  • Fatal

Die Log-Levels Verbose und Debug sollten nur für Fehlersuche gesetzt werden, da die geloggte Menge gross werden kann.

WriteTo.Args.Path

Hier wird der Pfad zum Log-File gesetzt. Bsp.: C:\\temp\logs.log

Weitere Konfigurationen

Weitere Konfigurationen siehe https://github.com/serilog/serilog-settings-configuration.


Database

{
  "Database": {
    "InstanceMode": "[Instance-Mode]",
    "ConnectionStrings": {
      "MSSQL": "[Connection-String]",
      "PostgreSQL": "[Connection-String]"
    }
  }
}

Das vorliegende JSON-Konfigurationsobjekt "Database" enthält Einstellungen für die Datenbankverbindung in der Anwendung. Es umfasst die folgenden Informationen:

  • DatabaseProvider: Hier wird die Datenbanktechnologie angegeben, der in der Anwendung verwendet wird. Es wird " MSSQL" oder "PostgreSQL" unterstützt.
  • ConnectionStrings: Dieser Abschnitt enthält die Connection-Strings für die beiden unterstützten Datenbanktechnologien "MSSQL" und "PostgreSQL". Die Connection-Strings sind Platzhalter für die tatsächlichen Verbindungsinformationen, die benötigt werden, um eine Verbindung zur jeweiligen Datenbank herzustellen.
  • InstanceMode: Gibt an, ob die Datenbankmigration beim Start der Anwendung durchgeführt werden soll.
  • RUN_ONLY: Die Migration wird nicht durchgeführt.
  • DB_UPDATE_ONLY: Nur ein Update wird ausgeführt und danach wird die Applikation beendet.
  • DB_UPDATE_AND_RUN: Die Migration wird durchgeführt und der Service wird nach erfolgreicher Migration gestartet.

Etcd

{
  "Etcd": {
    "Enabled": true,
    "ConnectionString": "[Connection-String]",
    "Username": "[Username]",
    "Password": "[Password]",
    "KeyPrefix": "[KeyPrefix]",
    "CacheEnabled": true,
    "CachePath": "[CachePath]",
    "SyncInterval": "[SyncInterval]"
  }
}

Konfiguration für die Verbindung zu einem etcd-Server, der als zentraler Konfigurationsspeicher dient.

Enabled

Aktiviert oder deaktiviert die etcd-Integration.

ConnectionString

Die Verbindungs-URL zum etcd-Server.

Username

Benutzername für die Authentifizierung am etcd-Server.

Password

Passwort für die Authentifizierung am etcd-Server.

KeyPrefix

Präfix, der allen etcd-Schlüsseln vorangestellt wird.

CacheEnabled

Aktiviert das lokale Zwischenspeichern der etcd-Konfiguration.

CachePath

Lokaler Pfad, unter dem die gecachten Konfigurationen gespeichert werden.

SyncInterval

Intervall für die Synchronisation mit dem etcd-Server (z.B. "00:05:00" für 5 Minuten).

E-Mail-Server

Konfiguriert einen E-Mail-Server, der für alle Mandanten verwendet wird, um E-Mails zu versenden. Ein mandanten-spezifischer E-Mail-Server kann auf Mandanten-Ebene konfiguriert werden. Es muss entweder die SMTP-Konfiguration oder die Microsoft-Graph-API-Konfiguration vollständig angegeben werden – entsprechend dem ausgewählten Protocol; und in jedem Fall muss der allgemeine Teil ausgefüllt werden.

{
  "EmailConfiguration": {
    "Protocol": "[MICROSOFT_GRAPH_API | SMTP]",
    "EMailFrom": "[SMTP Sender E-Mail]",

    "Smtp": {
      "SmtpHost": "[SMTP Host]",
      "SmtpPort": PORT,
      "UserId": "[SMTP User ID]",
      "Password": "[SMTP Password]",
      "SslEnabled": true/false
    },

    "MicrosoftGraphApi": {
      "ClientId": "[Azure Client ID]",
      "ClientSecret": "[Azure Client Secret]",
      "TenantId": "[Azure Tenant ID / Directory]"
    }
  }
}

Allgemein

Protocol (Standardmässig SMTP)

Gibt an, über welches Protokoll E-Mails versendet werden sollen. Mögliche Werte:

  • SMTP: Der Versand erfolgt über einen konfigurierten SMTP-Server.
  • MICROSOFT_GRAPH_API: Der Versand erfolgt über die Microsoft Graph API. In diesem Fall müssen die entsprechenden Azure-AD-Zugangsdaten angegeben werden.

EMailFrom

Die Absenderadresse, die beim Versand der E-Mails verwendet werden soll.

Hinweis:

  • Bei Verwendung von SMTP muss die Adresse in der Regel zur Domäne des SMTP-Kontos passen.
  • Bei Verwendung von MICROSOFT_GRAPH_API muss die Adresse entweder dem authentifizierten Benutzer oder einer autorisierten Absenderadresse (z. B. Shared Mailbox) entsprechen.

SMTP (nur erforderlich, wenn Protocol = "SMTP")

SmtpHost

Hostname oder IP-Adresse des SMTP-Servers, über den E-Mails gesendet werden.

SmtpPort

Der Port für die SMTP-Kommunikation (z. B. 587 für STARTTLS oder 465 für SMTPS).

UserId (Optional)

Benutzername zur Authentifizierung beim SMTP-Server.

Password (Optional)

Passwort für die Anmeldung beim SMTP-Server.

SslEnabled (Standardmässig false)

Gibt an, ob SSL/TLS für die Verbindung zum SMTP-Server verwendet wird.

Microsoft Graph API-Konfiguration (nur erforderlich, wenn Protocol = "MICROSOFT_GRAPH_API")

ClientId

Die Client-ID (Application ID) der registrierten Azure AD-Anwendung, die Zugriff auf Microsoft Graph hat.

ClientSecret

Das geheime Schlüsselmaterial (Client Secret) der Azure-Anwendung, das zur Authentifizierung verwendet wird.

TenantId

Die Verzeichnis-ID (Tenant ID) des Azure AD-Mandanten, unter dem die Anwendung registriert ist.


Tenants

{
  "Tenants": {
    "[Tenant-Key]": {
      "ApiBaseUrl": "[PROTOKOLL]://[DOMAIN]:[OWIN-PRIVATE-PORT]",
      "Security": {
        "CmiStsUri": "[STS-URL]",
        "Service": {
          "Client_secret": "[STS-CLIENT-SECRET]",
          "Client_id": "[STS-CLIENT-ID]"
        },
        "ConfigUi": {
          "Client_id": "[STS-CLIENT-ID]"
        }
      },
      "BackgroundTaskConfiguration": {
        "WaitTimeInSeconds": 5
      },
      "Caching": {
        "AbsoluteExpiration": 3600
      },
      // optional:
      "EmailConfiguration": {
        // wie globale Konfiguration
      }
    }
  }
}

In der "Tenants"-Konfiguration werden einzelne Mandanten als eigenständige JSON-Objekte innerhalb des "Tenants"-Objekts definiert. Der Schlüssel des jeweiligen Objekts entspricht dabei dem Namen des Mandanten.

Hier ist ein Beispiel mit den Mandanten prod und test:

{
  "Tenants": {
    "prod": {
      ...
    },
    "test": {
      ...
    }
  }
}

ApiBaseUrl

Url zur Metatool API. Die Url muss auf dem Owin-Privateport gerichtet sein. Beispiel: https://mandant.cmicloud.ch:10004

Security

Konfiguriert den client_credentials-Flow um beim CMI STS Access Tokens zu beziehen. Das ist notwendig, damit die API mit dem CMI Server Service kommunizieren kann.

Hier ist die Minimalkonfiguration beschrieben, die am CMI STS vorgenommen werden muss.

CmiStsUri

Url zum CMI STS. URL muss inkl. Mandant angegeben werden und mit /identity enden. Beispiel.: https://sts3.cloud.ch/<MANDANT>/identity

Service.Client_id

Die Client ID für den client_credentials-Flow, welche für Hintergrundaufgaben der Web-API verwendet wird. Eine Beispielkonfiguration sind hier zu finden.

Service.Client_secret

Client Secret in Plaintext, welches beim STS konfiguriert ist. Das Secret wird für den client_credentials-Flow verwendet.

ConfigUi.Client_id

Client ID für den authorization code-Flow, der vom ConfigUI ausgeführt wird. Es kann der selbe Client verwendet werden, wie in Service.Client_id. Wenn jedoch für das Config UI andere Sicherheitsparameter gelten sollen, sollt ein separater Client beim CMI STS für das Config UI hinterlegt werden.

BackgroundTaskConfiguration

WaitTimeInSeconds

Dauer in Sekunden, die der geplante Task nach der Verarbeitung eines Kontakts wartet, bevor der nächste verarbeitet wird.

Caching

Hier kann der Cache, welcher gewisse Metatool Requests cacht, eingestellt werden.

AbsoluteExpiration

Zeit in Sekunden, wie lange die Requests im Cache bleiben.

EmailConfiguration

Optional können E-Mail-Server-Einstellungen pro Mandant festgelegt werden. Werden keine E-Mail-Server-Einstellungen auf Mandanten-Ebene festgelegt, wird die globale Konfiguration für den Mandanten verwendet.