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/
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).