Skip to content

Konfiguration

Die Konfiguration erfolgt in der Datei appsettings.json. 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-Level werden unterstützt:

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

Die Log-Level 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-cmi-webdav\\cmi-webdav-.log

Weitere Konfigurationen

Weitere Konfigurationsmöglichkeiten siehe https://github.com/serilog/serilog-settings-configuration.


Telemetriedaten

Der Service bietet die Moglichkeit, Telemetriedaten zu senden. Informationen zur Konfiguration befinden sich hier

Forwarded Headers

Der Service bietet die Moglichkeit, die Forwarded-Header zu verarbeiten. Informationen zur Konfiguration befinden sich hier

BasePath

Beinhaltet die öffentliche Url einen Basis-Url-Pfad, werden Callback-Urls generiert, bei denen dieser Pfad fehlt. Der Basispfad muss dem Service bekannt gemacht werden:

"BasePath": "[PATH]"

Beispiel:

  • Öffentliche Url am Proxy: https://example.com/services/webdav
  • Binding am Web Server: https://myhost.local/webdav
  • Zu konfigurierender Pfad: /services/webdav

Hinweis: Dieses Beispiel muss mit den X-Forwarded-Host Header kombiniert werden, damit statt myhost.local, der Host example.com verwendet wird.

Caching

Es muss entweder FileDistributedCache oder Redis konfiguriert werden. Sind beide Konfigurationen enthalten, so wird Redis verwendet. Wir empfehlen den Redis-Cache zu verwenden, vor allem wenn der WebDav-Service im skaliterten Betrieb betrieben wird.

WebDav speichert bestimmte Daten langfristig, die auch nach einem Neustart erhalten bleiben müssen. Daher muss entweder der Redis- oder der FileDistributed-Cache konfiguriert sein.

FileDistributedCache

{
  "FileDistributedCache": {
    "Path": "[DIRECTORY]",
    "EnableCacheCleanup": true,
    "CleanupInterval": "0.00:05:00"
  }
}

Path

Verzeichnispfad, in dem Cache-Daten gespeichert werden. Lokale Verzeichnisse, SMB- und NFS-Verzeichnisse werden unterstützt.

EnableCacheCleanup

Default: true

Aktiviert einen Background-Tasks der abgelaufene Cache-Items aus dem Verzeichnispfad löscht.

CleanupInterval

Default: 0.00:05:00

Intervall einer Hintergrundaufgabe um abgelaufene Cache-Daten zu entfernen (Format: d.hh:mm:ss).

Redis

{
  "Redis": {
    "ConnectionString": "[CONNECTION-STRING]",
    "InstanceName": "[INSTANCE-NAME]"
  }
}

ConnectionString

Connection-String für den Redis-Cache.

InstanceName

Der Redis Instance-Name.

DavEngineOptions

{
  "DavEngineOptions": {
    "OutputXmlFormatting": false,
    "IsDebugEnabled": false
  }
}

OutputXmlFormatting

Default: false

Wenn OutputXmlFormatting aktiviert ist, werden die XML-Requests und -Responses des WebDav formatiert im Log-File gespeichert. Dies kann zur Fehlersuche hilfreich sein, beeinträchtigt jedoch die Performance.

IsDebugEnabled

Default: false

Wenn IsDebugEnabled aktiviert ist, wird das ganze WebDav-Protokoll im Log-File geloggt. Achtung! Das erzeugt grosse Log-Files und sollte nur zur Fehlersuche aktiviert werden.

Tenants

{
  "Tenants": {
    "[Tenant-Key]": {
      "Security": {
        "Client_Id": "[STS-CLIENT-ID]",
        "Client_Secret": "[STS-CLIENT-SECRET]",
        "Authority": "[STS-URL]",
        "LoginDialogSize": "1200x800",
        "AllowedCors": "*",
        "UseMsofba": false
      },
      "Server": {
        "OwinPrivateUri": "[OWIN-PRIVATE-URL]",
        "ReadOnly": false
      }
    }
  }
}

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": {
      ...
    }
  }
}

Security

{
  "Security": {
    "Client_Id": "[STS-CLIENT-ID]",
    "Client_Secret": "[STS-CLIENT-SECRET]",
    "Authority": "[STS-URL]",
    "LoginDialogSize": "1200x800",
    "AllowedCors": "*",
    "UseMsofba": false
  }
}

Hier ist die Konfiguration für den STS sowie weitere sicherheitsrelevante Einstellungen. Hier ist die Minimalkonfiguration vom STS beschrieben.

Client_Id

Die Client ID welche für den WebDav-Service verwendet wird. Details, u.a. welche Grant-Types unterstützt werden müssen, und eine Beispielkonfiguration sind hier zu finden.

Client_Secret

Client Secret welches beim STS konfiguriert ist. Das Client Secret muss in Plaintext eingetragen sein.

Authority

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

LoginDialogSize

Default: "1200x800"

Die Grösse des Login-Dialogs in Pixel. Standardmässig beträgt sie 1200x800. Diese Einstellung ist nur relevant, wenn die MS-OFBA-Authentifizierung verwendet wird.

AllowedCors

Default: "*"

Wenn der Webclient sowie der WebDAV-Server auf unterschiedlichen URLs laufen, ist es nötig in der Config des WebDav's die URL des Webclients zu hinterlegen damit Requests von diesem aus nicht fehlschlagen. Dies geschieht über AllowedCors. Standardmässig ist der Wert *, wodurch alle Hosts erlaubt sind. CORS bestimmt, welche externen Domains auf Ressourcen des Servers zugreifen dürfen.

UseMsofba

Default: false

Steuert, ob die MS-OFBA-Authentifizierung verwendet wird. Standardmässig ist dieser Wert auf false gesetzt und es wird die URL-Token-Methode verwendet (siehe hier).

Server

{
  "Server": {
    "OwinPrivateUri": "[OWIN-PRIVATE-URL]",
    "ReadOnly": false
  }
}

OwinPrivateUrl

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

ReadOnly

Stuert, ob über den WebDav nur eine ReadOnly-Sicht auf Dokumente ermöglicht wird (kein Editieren).