Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

...

General

Die Konfiguration des Connect Servers erfolgt in der Regel mit Hilfe von JSON-Dateien, welche sich im Installationsverzeichnis der Applikation befinden. In Spezialfällen ist eine Übersteuerung über Umgebungsvariablen oder über Kommandozeilenparameter möglich.

Standardkonfiguration

Die Standardkonfiguration befindet sich in der Datei “appsettings.Default.json”. Diese Datei sollte nicht direkt verändert werden, da diese Änderungen ggf. durch ein späteres Upgrade überschrieben werden.

Installationsspezifische Konfiguration

Soll eine installationsspezifische Konfiguration angelegt werden, so empfiehlt es sich die Datei „appsettings.Default.json“ in eine Datei mit dem Namen “appsettings.json” zu kopieren. Diese Datei wird bei einem eventuellen Upgrade nicht überschrieben, somit bleiben die hier hinterlegten Konfigurationseinstellungen bestehen.

Die Standardkonfiguration wird hierbei weiterhin berücksichtigt. Die installationsspezifische Konfiguration muss daher nur die gewünschten Deltas enthalten.

Umgebungsspezifische Konfiguration

Wird ein Installationsverzeichnis in verschiedenen Umgebungen genutzt (z. B. in einem Template für Container), so können umgebungsspezifische Konfigurationen angelegt werden. Hierfür wird die Datei „appsettings.Default.json“ in eine Datei mit dem Namen “appsettings.{environment}.json” kopiert ({environment} ist hierbei durch den Namen der entsprechenden Umgebung zu ersetzen).

In diesem Szenario kann die Umgebung zur Laufzeit mit Hilfe der Umgebungsvariablen “ASPNETCORE_ENVIRONMENT” spezifiziert werden. In der Regel werden hier die Werte “Development”, “Staging” und “Production” verwendet, der Standardwert ist “Production”.

Die Standardkonfiguration sowie ein evtl. vorhandene installationsspezifische Konfiguration werden weiterhin berücksichtigt. Die umgebungsspezifischen Konfigurationen müssen daher nur die gewünschten Deltas enthalten.

Die Verwendung der Umgebung “Development” sollte in Produktionsumgebungen vermieden werden, da hierbei zusätzliche Debugging-Funktionalitäten aktiviert werden.

Explizite Konfiguration

Bei Bedarf können in der Kommandozeile über das Argument “settings=…”, “-settings=…”, “--settings=…” oder “/settings=…” zusätzliche Konfigurationsdateien angegeben werden. Hierbei wird geprüft, ob die angegebene Konfigurationsdatei vorhanden ist und gegebenenfalls eine Fehlermeldung ausgegeben. Diese Prüfung kann deaktiviert werden, indem an den Dateinamen ein Fragezeichen angehängt wird. Dadurch lassen sich auch optionale Konfigurationsdateien in der Kommandozeile spezifizieren.

Die Standardkonfiguration sowie die installationsspezifische Konfiguration und die umgebungsspezifische(n) Konfiguration(en) werden weiterhin berücksichtigt. Die expliziten Konfigurationen müssen in diesem Fall nur die gewünschten Deltas enthalten.

Struktur der Konfigurationsdatei

Die Konfigurationsdatei für den Connect Server ist eine JSON Datei mit eine JSON Objekt als Wurzelelement. Die entsprechenden untergeordneten Elemente werden in den folgenden Kapiteln beschrieben.

Der Abschnitt „AllowedHosts“ (JSON Wert vom Typ String)

Dieser Abschnitt erlaubt die Einschränkung der Host-Namen, an welche der Webserver gebunden werden kann. Somit lässt sich der Zugriff über unerwünschte Hostnamen oder über IP-Adressen verhindern. Mehrere Werte können durch ein Semikolon getrennt werden. Weitere Informationen finden Sie unter folgendem Link:

...

Beispiel

Code Block
...
  "AllowedHosts": "connect.mycompany.com;localhost",
...

Der Abschnitt „Debug“ (JSON Objekt)

Dieser Abschnitt enthält Einstellungen zur Fehleranalyse.

Der Abschnitt HttpLogging (JSON Objekt)

In diesem Abschnitt kann die Protokollierung des eingehenden und ausgehenden HTTP-Verkehrs aktiviert werden. Bitte beachten Sie, dass hierbei eine erhebliche Datenmenge in die Protokolle geschrieben werden kann und dass die Protokollierung spürbare Auswirkungen auf die Performance des Gesamtsystems hat. Die Funktionalität sollte nur dann aktiviert werden, wenn das Ziel der Protokollierung eine Datei oder die Konsole ist. Hier können folgende Werte hinterlegt werden:

...

Eigenschaft

...

Typ

...

Funktion

...

Enabled

...

Boolean

...

Diese Option aktiviert oder deaktiviert die Protokollierung des eingehenden aus ausgehenden HTTP-Verkehrs. Da diese Funktionalität bei Bedarf auch zur Laufzeit über die GUI aktiviert oder deaktiviert werden kann, empfiehlt es sich, diese Voreinstellung auf dem Wert “false” zu belassen.

...

Include

...

Array mit Werten vom Typ String

...

Dieser Wert enthält eine Auflistung von Regular Expressions. Nur URIs, welche zu einer der hier aufgelisteten Regular Expressions passen, werden bei der Protokollierung berücksichtigt. Wird dieser Wert nicht definiert, so werden generell aller URIs in die Protokollierung miteinbezogen.

...

Exclude

...

Array mit Werten vom Typ String

...

Dieser Wert enthält eine Auflistung von Regular Expressions. Nur URIs, welche nicht zu einer der hier aufgelisteten Regular Expressions passen, werden bei der Protokollierung berücksichtigt. Wird dieser Wert nicht definiert, so werden keine URIs von der Protokollierung ausgeschlossen.

...

ForceHexDump

...

Boolean

...

Ist dieser Wert nicht definiert oder auf false gesetzt, so entscheidet der Connect Server, anhand des Content Types inwiefern der Inhalt einer HTTP-Nachricht als Text oder als Hexdump angezeigt wird. Wird dieser Wert auf true gesetzt, wird die Darstellung des Inhalts von HTTP-Nachrichten als Hexdump erzwungen (unabhängig vom Inhalt).

Der Abschnitt EnableBackgroundExceptions (JSON Wert vom Typ Boolean)

Dieser Wert steuert den Umgang mit bei der Hintergrundverarbeitung auftretenden Exceptions. Diese Option sollte nach Möglichkeit nicht definiert oder auf den Wert false gesetzt werden. Der Wert true macht nur während des Debuggings oder innerhalb von Unit Tests Sinn.

Beispiel

...

languagejson

...

The Connect Server is usually configured using JSON files, which are located in the installation directory of the application. In special cases, overriding via environment variables or via command line parameters is possible.

Default configuration

The default configuration is located in the appsettings.Default.json file. This file should not be changed directly, because these changes may be overwritten by a later upgrade.

Installation-specific configuration

If an installation-specific configuration is to be created, it is recommended to copy the file "appsettings.Default.json" into a file with the name "appsettings.json". This file will not be overwritten in case of an upgrade, so the configuration settings stored here will remain.

The default configuration is still taken into account here. The installation-specific configuration must therefore only contain the desired deltas.

Environment-specific configuration

If an installation directory is used in different environments (e.g. in a template for containers), environment-specific configurations can be created. For this purpose, the file "appsettings.Default.json" is converted into a file with the name "appsettings.{environment}.json" copied ({environment} must be replaced by the name of the corresponding environment).

In this scenario, the environment can be specified at runtime using the environment variable "ASPNETCORE_ENVIRONMENT". Usually the values "Development", "Staging" and "Production" are used here, the default value is "Production".

The default configuration and any existing installation-specific configuration are still taken into account. The environment-specific configurations must therefore only contain the desired deltas.

The use of the "Development" environment should be avoided in production environments, as this activates additional debugging functionalities.

Explicit configuration

If required, additional configuration files can be specified in the command line via the argument "-settings=...", "--settings=..." or "/settings=...". This will check if the specified configuration file exists and will print an error message if necessary. This check can be disabled by appending a question mark to the file name. Thus also optional configuration files can be specified in the command line.

The default configuration as well as the installation-specific configuration and the environment-specific configuration(s) are still taken into account. The explicit configurations in this case only have to contain the desired deltas.

Priority of the configuration types

If multiple configurations are available, they are applied in the following order:

  1. Default configuration (appsettings.Default.json)

  2. Environment-specific configuration (appsettings.{environment}.json)

  3. Installation-specific configuration (appsettings.json)

  4. Explicit configuration

  5. Override via environment variables

  6. Override via command line

Structure of the configuration file

The configuration file for the Connect Server is a JSON file with a JSON object as the root element. The corresponding child elements are described in the following chapters.

The AllowedHosts section (JSON value of type String).

This section allows you to restrict the host names to which the web server can be bound. Thus, access via unwanted host names or via IP addresses can be prevented. Multiple values can be separated by a semicolon. For more information, see the following link:

...

Example

Code Block
...
  "AllowedHosts": "connect.mycompany.com;localhost",
...

The Debug section (JSON object)

This section contains settings for error analysis.

The section HttpLogging (JSON Object)

In this section, logging of incoming and outgoing HTTP traffic can be enabled. Please note that a considerable amount of data can be written to the logs when this is done and that logging has a noticeable impact on the performance of the overall system. The functionality should only be enabled if the target of the logging is a file or the console. The following values can be stored here:

Property

Type

Function

Enabled

Boolean

This option enables or disables logging of incoming from outgoing HTTP traffic. Since this functionality can also be enabled or disabled at runtime via the GUI if required, it is recommended to leave this preset at the value "false".

Include

Array with values of type String

This value contains a list of regular expressions. Only URIs that match one of the regular expressions listed here are included in the logging. If this value is not defined, all URIs are generally included in the logging.

Exclude

Array with values of type String

This value contains a list of regular expressions. Only URIs that do not match one of the regular expressions listed here will be considered for logging. If this value is not defined, no URIs will be excluded from logging.

ForceHexDump

Boolean

If this value is not defined or is set to false, the Connect Server decides, based on the content type, to what extent the content of an HTTP message is displayed as text or as a hexdump. If this value is set to true, the content of HTTP messages is forced to be displayed as a hexdump (regardless of the content).

The EnableBackgroundExceptions section (JSON value of type Boolean).

This value controls the handling of exceptions that occur during background processing. If possible, this option should not be defined or set to the value false. The value true only makes sense during debugging or within unit tests.

Example

Code Block
languagejson
...

  "Debug": {
    "HttpLogging": {
      "Enabled": false,
      "Include": [
        ".*"
      ],
      "Exclude": [
        "^(http|https)://[^/]+/font_content/",
        "^(http|https)://[^/]+/js_framework/",
        "^(http|https)://[^/]+/libapi/",
        "^(http|https)://[^/]+/[sS]ervercss/",
         "^(http|https)://[^/]+/$font/",
        "^(http|https)://[^/]+/favicon.ico$js/",
        "^(http|https)://[^/]+/index.html$lib/",
        "^(http|https)://[^/]+/[sS]erver$erver/",

        "^(http|https)://[^/]+/$",
        "^(http|https)://[^/]+/favicon.css$ico$",
        "^(http|https)://[^/],
 +/index.html$",
    "ForceHexDump": false   "^(http|https)://[^/]+/[sS]erver$",
        "^(http|https)://[^/]+/[^/]+.css$"
      ],
      "ForceHexDump": false
    },
    "EnableBackgroundExceptions": false
  },
  
...

...

The Endpoints section (JSON Array)

Dieser Abschnitt dient zur Konfiguration des integrierten Webservers und enthält ein Array mit Informationen zu den Enpoints. Die einzelnen Elemente des Arrays besitzen folgende Eigenschaften:

...

Eigenschaft

...

Typ

...

This section is used to configure the integrated web server and contains an array with information about the endpoints. The individual elements of the array have the following properties:

Property

Type

Function

Uri

String

Diese Eigenschaft enthält die URI des gewünschten Endpoints. Schema und Host werden zwingend benötigt, die Angabe eines Ports ist optional. Ist kein Port angegeben, so werden die jeweiligen Standard-Ports (80 bei HTTP und 443 bei HTTPS) verwendet. Wird als Host keine IP-Adresse angegeben, so wird der angegebene Name mittels DNS Lockup in eine IP-Adresse umgewandelt. Die IP-Adressen This property contains the URI of the desired endpoint. Schema and host are mandatory, the specification of a port is optional. If no port is specified, the respective default ports (80 for HTTP and 443 for HTTPS) are used. If no IP address is specified as the host, the specified name is converted to an IP address using DNS lookup. The IP addresses 0.0.0.0 oder * stehen für alle verfügbaren IP-Adressen des Serversor * represent all available IP addresses of the server.

Certificate

JSON Objekt

Diese Eigenschaft wird nur bei der Verwendung von HTTPS benötigt. Das hir angegebene JSON Objekt benötigt folgende Eigenschaften:

Source
Gibt den Speicherort des Zertifikats an. Hierbei werden folgende Werte unterstützt:

File
Das Zertifikat liegt als Datei vor.

UserStore
Das Zertifikat liegt im benutzerspezifischen Zertifikatspeicher.

SystemStore
Das Zertifikat liegt im systemspezifischen Zertifikatspeicher.

Store
Das Zertifikat liegt in einem Zertifikatspeicher und Connect versucht diesen anhand der weiteren Daten zu ermitteln.

Path
Nur für Source “File”: Der Pfad zur Zertifikatdatei oder der Pfad zu dem Verzeichnis, welches die Zertifikatdatei enthält.

Name
Nur für Source “File”: Enthält die Eigenschaft “Path” das Verzeichnis, welches die Zertifikatdatei enthält, so muss hier der Dateiname der Zertifikatdatei angegeben werden. Andernfalls kann diese Eigenschaft weggelassen werden.

Password
Nur für Source “File”: Das Passwort für den in der Zertifikatdatei enthaltenen privaten Schlüssel.

SerialNumber (or Serial or SerialNo)
Selektionskriterium: Die Seriennummer des zu verwendenden Zertifikats.

SubjectName (or Subject)

Selektionskriterium: Der Betreff (Subject) des zu verwendenden Zertifikats.

Thumbprint
Selektionskriterium: Der Fingerabdruck (Thumbprint) des zu verwendenden Zertifikats.

Die Selektionskriterien werden nur dann ausgewertet, wenn das Zertifikat aus einem Zertifikatspeicher gelesen werden soll. Es müssen nicht alle möglichen Selektionskriterien spezifiziert werden, die Zertifikatsuche muss jedoch zu einem eindeutigen Ergebnis führen. Erfüllen mehrere Zertifikate die Selektionskriterien, kann der Webserver nicht gestartet werden.

Die Verwendung mehrerer Zertifikate am selben Endpoint wird derzeit nicht unterstützt. Ist ein Endpoint über verschiedene Hostnamen erreichbar, so müssen diese in einem Zertifikat aufgelistet sein. Wildcard-Zertifikate werden ohne Einschränkungen unterstützt.

Beispiel

...

languagejson

...

object

This property was used in previous versions to specify the server certificate when using HTTPS. For more information on the specification of the certificates to use, see below.

This property is only supported for compatibility reasons. Please use the ServerCertificates property to specify the server certificate, which also supports the use of multiple server certificates.

ClientCertificates

JSON object

This property is only taken into account when using HTTPS and allows authentication at connection level using client certificates (mutual TLS authentication / mTLS). A detailed description can be found in a separate section below.

ServerCertificates

JSON object

This property is only required when using HTTPS and is used to specify the server certificates to use. A detailed description can be found in a separate section below.

HttpProtocols

JSON array

This property specifies the HTTP protocols supported by the endpoint. The following values (as strings) are allowed here:

http1
Support for HTTP/1.

http2
Support for HTTP/2.

If this property is not specified, HTTP/1 and HTTP/2 are supported. Support for HTTP/3 is not yet stable in the current version of the .NET Framework, so it is not offered at the moment.

SslProtocols

JSON array

This property specifies the SSL protocols supported by the endpoint when using HTTPS. The following values (as strings) are allowed here:

tls1.0
Support for TLS 1.0.

tls1.1
Support for TLS 1.1.

tls1.2
Support for TLS 1.2.

tls1.3
Support for TLS 1.3.

If this property is not specified, TLS 1.2 and TLS 1.3 are supported. Support for TLS 1.0 and TLS 1.1 is provided for compatibility reasons, but these deprecated protocols are no longer considered secure.

HandshakeTimeout

Integer

This property defines the maximum duration of the SSL handshake in seconds before it is aborted with a timeout on the server side.

The ClientCertificates section (JSON Object)

This configuration section defines the handling of client certificates. If no client certificates are to be used, the entire section can be omitted. Currently, the following properties are supported:

Property

Type

Function

Mode

String

Defines the behavior when establishing a connection. The value "allowed" allows client certificates but does not explicitly request them from the other side, the value "required" explicitly requests a client certificate from the other side.

Authentication

JSON object

Defines the authentication behavior at the application level (not at the connection level). This object has only one property of type boolean with the name "Enabled". If this is set to true, the name in the certificate (subject name) automatically specifies the current user. Provided that the certificate has been successfully validated, no further input of a user name or password is required for logging in. If the client certificates come from a public certification authority, the subject name should also be checked in addition to the general validity check (via SubjectRegex) in order to block foreign client certificates at the connection level.

Validation

JSON object

This property defines the validation behavior for client certificates. It should be noted here that the validation functions of the underlying operating system are only extended by these settings. Validation is therefore initially performed by the operating system on the basis of the certificates stored there. If this validation is not successful, additional certificates can be included in the validation. Filter settings can be used to exclude certificates that are actually valid. Furthermore, an explicit check of the revocation lists can be performed, which is usually not carried out by the operating system for performance reasons. The following properties can be configured here:

CheckRevokation
A boolean value that specifies whether to check the revocation lists to reject revoked certificates.

Filters → SubjectRegex
A regular expression that can be used to define additional filtering by Subject Name.

IntermediateCertificates
An array of certificates from intermediate certificate authorities which are included in the validation if the validation by the operating system was not successful. This allows intermediate certificate authorities to be included without having to store them in the certificate store of the operating system. More information on the specification of the certificates to be used can be found below.

TrustedClientCertificates
An array of client certificates which are considered valid without further checks. More information about the specification of the certificates to be used can be found below.

TrustedRootCertificates
An array with certificates from root certification authorities which are included in the validation if the validation by the operating system was not successful. This allows root certificate authorities to be included without having to store them in the certificate store of the operating system. More information on the specification of the certificates to be used can be found below.

The ServerCertificates section (JSON Object)

This configuration section currently contains only one property named “Bindings”. This JSON array contains the certificate bindings for the endpoint in the form of JSON objects with the following properties:

Property

Type

Function

Conditions

JSON object

This property defines the preconditions for using the associated server certificate. The following specifications are supported here:

Host
The hostname used in the request.

LocalNetwork
An IP address or a network (CIDR address) can be specified here. If this network contains the target address of the request, the condition is fulfilled.

RemoteNetwork
An IP address or a network (CIDR address) can be specified here. If this network contains the source address of the request, the condition is fulfilled.

The specification of preconditions is optional. Preconditions can consist of any subset of the supported constraints. Preconditions with multiple constraints are fulfilled if all specified constraints apply.

Certificate

JSON object

This property specifies the server certificate that will be assigned to the endpoint if the preconditions defined in “Conditions” apply. For more information on the specification of the certificates to be used, see below.

The certificate bindings are processed in the sequence defined by their array positions. The first element whose preconditions specified under "Conditions" are met or for which no preconditions have been specified will define the server certificate. Additional elements are not taken into account during processing.

It is recommended to specify a certificate without preconditions as the last element. This is then used as a fallback value.

Use of certificates

Wherever certificates can be specified, a JSON object is expected. This object supports the following properties:

Property

Type

Function

Source

String

Specifies the location of the certificate. The following values are supported:

File
The certificate is available as a file.

UserStore
The certificate is located in the user-specific certificate store.

SystemStore
The certificate is located in the system-specific certificate store.

Store
The certificate is stored in a certificate store and Connect tries to determine it based on the other data. The user-specific certificate store is searched first. If this search does not produce any results, the search continues in the system-specific certificate store.

Path

String

For source "File" only: The path to the certificate file or the path to the directory containing the certificate file.

Name

String

For source "File" only: If the "Path" property contains the directory that contains the certificate file, the file name of the certificate file must be specified here. Otherwise, this property can be omitted.

Password

String

For source "File" only: The password for the private key contained in the certificate file.

FriedlyName oder DisplayName

String

Selection criterion for the certificate store: The display name (friendly name) of the certificate to be used.

SerialNumber oder SerialNo oder Serial

String

Selection criterion for the certificate store: The serial number of the certificate to be used.

IssuerName oder Issuer

String

Selection criterion for the certificate store: The issuer of the certificate to be used.

IssuerDistinguishedName

String

Selection criterion for the certificate store: The issuer of the certificate to be used as Distinguished Name (CN=...)

SubjectName oder Subject

String

Selection criterion for the certificate store: The subject of the certificate to be used.

SubjectDistinguishedName

String

Selection criterion for the certificate store: The subject of the certificate to be used as Distinguished Name (CN=...)

Thumbprint

String

Selection criterion for the certificate store: The fingerprint (thumbprint) of the certificate to be used.

The selection criteria are only evaluated if the certificate is to be read from a certificate store. Not all possible selection criteria need to be specified, but the certificate search must lead to a unique result. If several certificates fulfill all specified selection criteria and only one of them is valid, the valid certificate is used. If several valid certificates fulfill all specified selection criteria, the web server cannot be started.

Example

Code Block
languagejson
...
  
  "Endpoints": [
    {
      "Uri": "http://*:80"
    },
    {
      "Uri": "https://*:443",
      "ClientCertificates": {
        "Mode": "required",
        "Authentication": {
          "Enabled": true
        },
        "Validation": {
          "CheckRevokation": true,
          "Filters": {
            "SubjectRegex": "@mycompany\\.com)$"
          },
          "IntermediateCertificates": [
            {
              "Source": "UserStore",
              "Subject": "My Company's intermediate certificate",
              "Serial": "01234567890ABCDEFFEDCBA9876543210"
            }
          ],
          "TrustedClientCertificates": [
            {
              "Source": "UserStore",
              "Serial": "012301234567456789AB89ABCDEFCDEF"
            }
          ],
          "TrustedRootCertificates": [
            {
              "Source": "UserStore",
              "Subject": "My Company's root certificate",
              "Serial": "FEDCBA987654321001234567890ABCDEF"
            }
          ]
        }
      },
      "ServerCertificates": {
        "Bindings": [
          {
            "Conditions": {
              "Host": "localhost",
              "LocalNetwork": "192.168.0.0/16",
              "RemoteNetwork": "192.168.0.0/16"
            },
            "Certificate": {
              "Source": "UserStore",
              "DisplayName": "My Company's server certificate"
              "Serial": "00112233445566778899AABBCCDDEEFF"
            }
          }
        ]
      },
      "HttpProtocols": [ "http2" ],
      "SslProtocols": [ "tls1.2", "tls1.3" ],
      "HandshakeTimeout": 10
    },
    {
      "Uri": "https://192.168.100.100:444",
      "Certificate": {
        "Source": "Store"File",
        "Path": "C:\Certificates",
        "Name": "Certificate.pfx",
        "SerialNumberPassword": "0123456789CertificatePassword"
      }
    }
  ],
  
...

...

The "Frontend" section (JSON

...

object)

Der Abschnitt „SupportedLanguages“ (JSON Array mit Werten vom Typ String)

Dieser Abschnitt definiert die im Dialog zur Pflege von Sprachabhängigen Texte auswählbaren Sprachen. Hierbei werden sowohl generische Sprachschlüssel (wie “en” oder “de”) als auch gebietsspezifische Sprachschlüssel (wie “en-US”, “en-UK”, “de-DE” oder “de-AT”) unterstützt.

...

The SupportedLanguages section (JSON array with string type values).

This section defines the languages that can be selected in the dialog for maintaining language-dependent texts. Both generic language keys (such as "en" or "de") and area-specific language keys (such as "en-US", "en-UK", "de-DE" or "de-AT") are supported.

Example

Code Block
languagejson
...

  "Frontend": {
    "SupportedLanguages": [ "de", "en", "es", "fr", "it", "nl" ]
  },

...

...

The Logging section (JSON

...

object)

Dieser Abschnitt enthält ein weiteres JSON Objekte mit dem Namen “LogLevel”, welches den Detailgrad der Protokollausgaben festlegt. Hierbei enthält die Eigenschaft “Default” die Standardeinstellung, weitere vorhandene Eigenschaften definieren ggf. abweichende Einstellungen für bestimmte .NET Namensräume. Für den Detailgrad werden folgende die Werte “Trace”, “Debug”, “Information”, “Warning” und “Error” unterstützt.

...

This section contains another JSON object called "LogLevel" which defines the level of detail of the log output. The property "Default" contains the default setting, other properties may define different settings for specific .NET namespaces. The following values are supported for the level of detail: "Trace", "Debug", "Information", "Warning" and "Error".

Example

Code Block
...

  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "IdentityServer4": "Warning",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },

...

Bei Bedarf kann der Detailgrad in Abhängigkeit vom Protokollierungsziel (Konsole, Event LogIf required, the level of detail can be specified depending on the logging target (console, event log, etc.) spezifiziert werden. Weitergehende Informationen finden sie unter folgendem Link. Further information can be found under the following link:

...

...

The Security section (JSON

...

object)

...

The IpFiltering section (JSON

...

object)

In diesem Abschnitt kann der Zugriff auf den Connect Server auf bestimmte IP-Adressen beschränkt werden. Hier können folgende Werte hinterlegt werden:

...

Eigenschaft

...

Typ

...

Funktion

...

Enabled

...

Boolean

...

Diese Option aktiviert oder deaktiviert die Filterung nach IP-Adressen.

...

Blacklist

...

Array mit Werten vom Typ String

...

Dieser Wert enthält eine Auflistung der IP-Adressen oder Netzwerke (CIDR-Adressen), welche vom Zugriff auf den Webserver ausgeschlossen werden sollen. Ist die Blacklist leer oder nicht angegeben, so wird lediglich die Whitelist betrachtet.

...

Whitelist

...

Array mit Werten vom Typ String

...

Dieser Wert enthält eine explizite Auflistung der IP-Adressen oder Netzwerke (CIDR-Adressen), welche auf den Webserver zugreifen dürfen (sofern sie nicht in der Blacklist enthalten sind). Ist die Whitelist leer oder nicht angegeben, so wird lediglich die Blacklist betrachtet (sofern verfügbar).

Der Abschnitt “JsonEncryptionKey“ (JSON Objekt)

Um Passwörtern im Klartext zu vermeiden, können diese vor der Speicherung in Dateien oder in der Datenbank verschlüsselt werden. Das genaue Verhalten wird durch folgende Eigenschaften definiert:

...

Eigenschaft

...

Typ

...

Funktion

...

Enabled

...

Boolean

...

Diese Option aktiviert oder deaktiviert die partielle Verschlüsselung für als JSON abgelegte Objekte. Ist diese Option nicht angegeben, ist die Verschlüsselung von Passwörtern deaktiviert.

...

Key

...

String

...

Dieser Wert wird bei der Generierung des Schlüssels miteinbezogen, so dass nur Passwörter nur von Connect Servern entschlüsselt werden können, bei denen derselbe Wert hinterlegt ist. Ist dieser Wert nicht definiert oder leer, so wird ein in der Applikation hinterlegter Standardschlüssel verwendet. Bitte beachten Sie, dass nach einer Änderung dieses Schlüssels alle gespeicherten Passwörter neu eingegeben werden müssen.

...

this section, access to the Connect Server can be restricted to specific IP addresses. The following values can be stored here:

Property

Type

Function

Enabled

Boolean

This option enables or disables filtering by IP addresses.

Blacklist

Array with values of type String

This value contains a list of IP addresses or networks (CIDR addresses) that should be excluded from accessing the web server. If the blacklist is empty or not specified, only the whitelist is considered.

Whitelist

Array with values of type String

This value contains an explicit listing of the IP addresses or networks (CIDR addresses) that are allowed to access the web server (if they are not included in the blacklist). If the whitelist is empty or not specified, only the blacklist is considered (if available).

The JsonEncryption section (JSON object)

To avoid important informations (e.g. passwords) in plain text, they can be encrypted before being stored in files or in the database. The exact behavior is defined by the following properties:

Property

Type

Function

Enabled

Boolean

This option enables or disables partial encryption for objects stored as JSON. If this option is not specified, encryption of important informations (e.g. passwords) is disabled.

Key

String

This value is included in the generation of the key so that only passwords can be decrypted only from Connect Servers where the same value is stored. If this value is not defined or empty, a default key stored in the application is used. Please note that after changing this key, all encrypted informations must be re-entered.

Additional sections

Additional sections are supported for special scenarios The following table lists these sections along with a linke to the corresponding documentation.

Example

Code Block
languagejson
...

  "Security": {
    "IpFiltering": {
      "Enabled": false,
      "Blacklist": [
      ],
      "Whitelist": [
        "::1",
        "127.0.0.1",
        "192.168.0.0/16"
      ]
    },
    "JsonEncryption": {
      "Enabled": true,
      "Key": "MySecretKey!"
    }
  },

...

...

The Workspace section (JSON

...

Dieser Abschnitt enthält Konfigurationsdaten für die Verbindung mit einem bestimmten Datenspeicher (Workspace). Hir können die folgenden Werte hinterlegt werden:

...

Eigenschaft

...

Typ

...

object)

This section contains configuration data for the connection to a specific data store (workspace). The following values can be stored here:

Property

Type

Function

Id

StringEnthält

eine eindeutige ID zur Identifikation des WorkspacesContains a unique ID to identify the workspace.

DataSource

JSON Objekt

Enthält die Informationen für die Verbindung mit der Datenbank mit Benutzern, Laufzeitinformationen und, je nach Konfiguration, den Connect Objekten. Dieses Objekt unterstützt folgende Eigenschaften:

Name
Enthält die ID des Workspaces. Dieser Wert muss normalerweise nicht angegeben werden und wird automatisch vorbelegt.

DbType
Definiert den Typ der verwendeten Datenbank. Derzeit werden hier die Werte “Sqlite” und ”SqlServer” unterstützt. Eine Unterstützung für “MySql” ist in Planung.

ConnectionString
Die Verbindungszeichenfolge, welche zum Herstellen der Verbindung mit der Datenbank verwendet wird. Bei der Verwendung von SQLite kann diese Eigenschaft weggelassen werden.

RetentionPeriods
Dieses JSON Objekt definiert die Aufbewahrungszeiten für bestimmte Datentypen. Es enthält folgende Attribute:

OpenContexts
Aufbewahrungszeitraum für nicht abgeschlossene Transaktionen in Tagen.

CompletedContexts
Aufbewahrungszeitraum für abgeschlossene Transaktionen in Tagen.

ConnectObjects

JSON Objekt

Definiert das Verhalten beim Zugriff auf Connect Objekte. Dieses Objekt unterstützt folgende Eigenschaften:

Provider
Definiert den für den Zugriff auf Connect-Objekte verwendeten Provider. Hier werden die Werte “Database” (Speicherung in der Datenbank) und “FileSystem” (Speicherung im Dateisystem) unterstützt.

RootPath
Sofern der Provider “FileSystem” verwendet wird, muss hier das Stammverzeichnis für die Ablage der Connect-Objekte definiert werden. Wird eine SQLite-Datenbank ohne Angabe eines Connection Strings verwendet, so definiert dieser Pfad auch das Verzeichnis, in dem die Datenbankdateien abgelegt werden.

DbLogging

JSON Objekt

Hier können zusätzliche Optionen für die Protokollierung des Datenbankzugriffs definiert werden. Dieses Objekt unterstützt folgende Eigenschaften:

LogLevel
Der gewünschte Detailgrad für Datenbank-spezifische Protokollausgaben. Es werden die Werte “Trace”, “Debug”, “Information”, “Warning” und “Error” unterstützt. Wird diese Eigenschaft nicht angegeben, wird der Standardwert “Error” verwendet.

EnableSensitiveDataLogging
Wird dieser Wert auf “true” gesetzt, so werden bei der Protokollierung auch Feldinhalte mit ausgegeben, andernfalls werden diese stets unterdrückt.

EnableDetailedErrors
Wird dieser Wert auf “true” gesetzt, so werden bei der Protokollierung detaillierte Fehlermeldungen der Datenbank ausgegeben.

...

object

Contains the information for connecting to the database with users, runtime information and, depending on the configuration, the Connect objects. This object supports the following properties:

Name
Contains the ID of the workspace. This value does not normally need to be specified and is automatically pre-populated.

DbType
Defines the type of database used. Currently the values "SqLite", "SqlServer", “PostgreSql” and "MySql" are supported here.

ConnectionString
The connection string used to connect to the database. When using SQLite, this property can be omitted.

RetentionPeriods
This JSON object defines the retention times for specific data types. It contains the following attributes:

OpenContexts
Retention period for uncompleted transactions in days.

CompletedContexts
Retention period for completed transactions in days.

ConnectObjects

JSON object

Defines the behavior when accessing Connect objects. This object supports the following properties:

Provider
Defines the provider used for accessing Connect objects. The values "Database" (storage in the database) and "FileSystem" (storage in the file system) are supported here.

RootPath
If the "FileSystem" provider is used, the root directory for storing the connect objects must be defined here. If an SQLite database is used without specifying a connection string, this path also defines the directory in which the database files are stored.

DbLogging

JSON object

Additional options for logging database access can be defined here. This object supports the following properties:

LogLevel
The desired level of detail for database-specific log output. The values "Trace", "Debug", "Information", "Warning" and "Error" are supported. If this property is not specified, the default value "Error" is used.

EnableSensitiveDataLogging
If this value is set to "true", field contents are also output during logging, otherwise they are always suppressed.

EnableDetailedErrors
If this value is set to "true", detailed error messages from the database are output during logging.

Example

Code Block
languagejson
...
  
  "Workspace": {
    "Id": "connect",
    "DataSource": {
      "DbType": "SqlServer",
      "ConnectionString": "Data Source=.\\SQLEXPRESS;Initial Catalog=connect;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
      "RetentionPeriods": {
        "OpenContexts": 3,
        "CompletedContexts": 1
      }
    },
    "ConnectObjects": {
      "Provider": "Database",
      "RootPath": ""
    },
    "DbLogging": {
      "LogLevel": "Warning",
      "EnableSensitiveDataLogging": false,
      "EnableDetailedErrors": true
    }
  }

...

Beispielkonfiguration

...

Example configuration

The following example shows the possible Connect-specific configuration settings:

Code Block
{
  "AllowedHosts": "*",

  "Debug": {
    "HttpLogging": {
      "Enabled": false,
      "Include": [
        ".*"
      ],
      "Exclude": [
        "^(http|https)://[^/]+/_content/",
        "^(http|https)://[^/]+/_framework/",
        "^(http|https)://[^/]+/api/",
        "^(http|https)://[^/]+/css/",
        "^(http|https)://[^/]+/font/",
        "^(http|https)://[^/]+/js/",
        "^(http|https)://[^/]+/lib/",
        "^(http|https)://[^/]+/[sS]erver/",

        "^(http|https)://[^/]+/$",
        "^(http|https)://[^/]+/favicon.ico$",
        "^(http|https)://[^/]+/index.html$",
        "^(http|https)://[^/]+/[sS]erver$",
        "^(http|https)://[^/]+/[^/]+.css$"
      ],
      "ForceHexDump": false
    }
  },

  "Endpoints": [
    {
      "Uri": "http://*:80"
    }
  ],

  "Frontend": {
    "SupportedLanguages": [ "de", "en", "es", "fr", "it", "nl" ]
  },

  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },

  "Security": {
    "IpFiltering": {
      "Enabled": false,
      "Blacklist": [
      ],
      "Whitelist": [
        "::1",
        "127.0.0.1",
        "192.168.0.0/16"
      ]
    },
    "JsonEncryption": {
      "Enabled": true,
      "Key": "MySecretKey!"
    }
  },

  "Workspace": {
    "Id": "connect",
    "DataSource": {
      "DbType": "sqlite",
      "RetentionPeriods": {
        "OpenContexts": 14,
        "CompletedContexts": 7
      }
    },
    "ConnectObjects": {
      "Provider": "filesystem",
      "RootPath": "Workspaces/connect"
    },
    "DbLogging": {
      "LogLevel": "Warning",
      "EnableSensitiveDataLogging": false,
      "EnableDetailedErrors": true
    }
  }
}

Übersteuerung von Konfigurationseinstellungen

Die in den JSON-Dateien hinterlegten Konfigurationseinstellungen können bei Bedarf übersteuert werden. Diese Vorgehensweise macht insbesondere bei der Automatisierung von Docker-basierten Umgebungen Sinn.

Übersteuerung mit Hilfe von Umgebungsvariablen

Um den Wert einer Konfigurationseinstellung zu übersteuern kann eine Umgebungsvariable mit dem Präfix “DOTNET_” oder “ASPNETCORE_” gefolgt vom Pfad der Einstellung in der JSON Datei definiert werden. Als Pfadtrennzeichen sollte hier ein doppelter Underscore (__) verwendet werden.

...

Override configuration settings

The configuration settings stored in the JSON files can be overridden if necessary. This approach makes sense especially when automating Docker-based environments.

Override with the help of environment variables

To override the value of a configuration setting an environment variable can be defined with the prefix "DOTNET_" or "ASPNETCORE_" followed by the path of the setting in the JSON file. A double underscore (__) should be used as path separator here.

You can find more information on this topic at the following link:

...

BeispielExample:

Code Block
SET DOTNET_Logging__LogLevel__Default=Debug

Übersteuerung über die Kommandozeile

Bei Bedarf können Konfigurationen auch mit Hilfe von Schlüssel-Wert-Paaren als Kommandozeilenparameter übersteuert werden. Der Name entspricht hierbei dem Pfad der Einstellung, wobei das Zeichen „:“ als Pfadtrennzeichen verwendet wird. Die Angabe von Schlüssel-Wert-Paaren kann auf verschiedene Art und Weisen erfolgen:

<name1>=<wert1> <name2>=<wert2> …
/<name1> <wert1> /<name2> <wert2> …
--<name1> <wert1> --<name2> <wert2> …

Weitere Informationen zu diesem Thema finden Sie unter folgendem Link:

...

Override via the command line

If required, configurations can also be overridden using key-value pairs as command line parameters. The name here corresponds to the path of the setting, using the ":" character as the path separator. Key-value pairs can be specified as follows:

<name1>=<value1> <name2>=<value2> ...

Example:

Code Block
GalileoGroup.Connect.Server.exe Logging:LogLevel:Default=Debug

 

...