Skip to main content

appsettings.json

Die Konfiguration des Unified Application Managers erfolgt über die Datei appsettings.json im Installationsverzeichnis, standardmäßig C:\Program Files (x86)\smcTeam\UnifiedApplicationManager. Das Setup legt die Datei an. Die Datei kann mit dem mitgelieferten JSON-Editor oder einem beliebigen Texteditor bearbeitet werden.

Nach jeder Änderung wird der Application Pool im IIS neu gestartet, damit die Änderungen wirksam werden. Backslashes in Pfaden werden doppelt angegeben, aus \ wird \\, z. B. C:\\Tools\\IntuneWinAppUtil.exe.

Nach der Installation müssen mindestens „IntuneWinAppUtilPath“ und „IntuneWinFileDirectory“ eingetragen werden. Datenbankverbindung, Tenant-ID und Client-ID trägt das Setup ein.

Die Identität des Application Pools benötigt Schreibrechte auf den Ordner der Log-Datei und auf den unter „IntuneWinFileDirectory“ angegebenen Ordner.

So sieht die appsettings.json nach der Installation aus:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information",
      "Hangfire": "Information"
    }
  },
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "Microsoft.Hosting.Lifetime": "Information"
      }
    },
    "Using": [
      "Serilog.Expressions"
    ],
    "Enrich": [
      "WithEnvironmentUserName",
      "FromLogContext"
    ],
    "Properties": {
      "ApplicationName": "Unified Application Manager"
    },
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console",
          "formatter": {
            "type": "Serilog.Templates.ExpressionTemplate, Serilog.Expressions",
            "template": "[{@t:HH:mm:ss} {@l:u3}] <s:{SourceContext}> {@m}\n{@x}"
          }
        }
      },
      {
        "Name": "MSSqlServer",
        "Args": {
          "connectionString": "{CONNECTION_STRING}",
          "tableName": "Logs",
          "autoCreateSqlTable": true,
          "restrictedToMinimumLevel": "Error"
        }
      },
      {
        "Name": "Async",
        "Args": {
          "configure": [
            {
              "Name": "File",
              "Args": {
                "formatter": {
                  "type": "Serilog.Templates.ExpressionTemplate, Serilog.Expressions",
                  "template": "<![LOG[{EnvironmentUserName} --> {@l:u}: {@m}\n{@x}]LOG]!><time=\"{@t:HH:mm:ss.fffffff}\" date=\"{@t:MM-dd-yyyy}\" component=\"{ApplicationName} {Version}\" context=\"\" type=\"{#if @l = 'Error'}3{#else if @l = 'Warning'}2{#else}1{#end}\" thread=\"\" file=\"\">\n"
                },
                "path": "UnifiedApplicationManager.log",
                "shared": "true",
                "fileSizeLimitBytes": "10000000",
                "rollOnFileSizeLimit": true,
                "flushToDiskInterval": "1"
              }
            }
          ]
        }
      }
    ]
  },
  "AllowedHosts": "*",
  "ApplicationUrl": "",
  "IntuneWinPackage": {
    "IntuneWinAppUtilPath": "",
    "IntuneWinFileDirectory": "",
    "OverwriteExistingPackages": false,
    "MaxIntuneWinFileSizeGb": 16
  },
  "ConnectionStrings": {
    "DefaultConnection": "{CONNECTION_STRING}",
    "HangfireConnection": "{CONNECTION_STRING}"
  },
  "AzureAuth": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "",
    "TenantId": "{TENANT_ID}",
    "ClientId": "{CLIENT_ID}"
  },
  "OpenAi": {
    "ApiKey": ""
  },
  "Customization": {
    "Title": "Unified Application Manager",
    "LogoUri": "UnifiedApplicationManager.png"
  },
  "PermaLinks": {
    "AuthorizationAndAuthentication": "https://docs.smcteam.de/books/unified-application-manager-english/page/authentication-and-authorization"
  },
  "MaintenanceSettings": {
    "UpdateAppThumbnailsCronString": "*/30 * * * *",
    "ThumbnailHeight": 64
  },
  "Proxy": {
    "Enabled": false,
    "Uri": "",
    "User": "",
    "Password": ""
  },
  "Cache": {
    "Enabled": true,
    "AbsoluteExpirationSeconds": 900,
    "SlidingExpirationSeconds": 300
  },
  "Roles": {
    "UAM": {
      "Read": "App.Read"
    },
    "Application": {
      "Read": "App.Read",
      "Create": "App.Create",
      "Modify": "App.Modify",
      "Delete": "App.Delete"
    },
    "Configuration": {
      "Read": "Configuration.Read",
      "Create": "Configuration.Create",
      "Modify": "Configuration.Modify",
      "Delete": "Configuration.Delete"
    },
    "Translation": {
      "Read": "Configuration.Read",
      "Create": "Configuration.Create",
      "Modify": "Configuration.Modify",
      "Delete": "Configuration.Delete"
    },
    "Scheduler": {
      "Read": "Hangfire"
    }
  },
  "Settings": {
    "DeleteGroups": false
  }
}

Die folgende Tabelle beschreibt die Einstellungen, die eingetragen oder bei Bedarf angepasst werden. Alle übrigen Einträge bleiben unverändert.

Schlüssel Beschreibung
Serilog.MinimumLevel.Default Mindeststufe der Protokollierung, z. B. „Information“, „Warning“ oder „Error“. Für die Fehlersuche kann vorübergehend „Debug“ gesetzt werden.
Serilog.WriteTo › MSSqlServer › connectionString Verbindung zur Datenbank, in die Fehler protokolliert werden. Wird vom Setup eingetragen.
Serilog.WriteTo › File › path Name der Log-Datei, optional mit Pfad. Ohne Pfad wird die Log-Datei im Installationsverzeichnis abgelegt.
Serilog.WriteTo › File › fileSizeLimitBytes Maximale Größe der Log-Datei in Byte, standardmäßig 10 MB.
Serilog.WriteTo › File › rollOnFileSizeLimit Bei „true“ wird nach Erreichen der maximalen Größe eine neue Log-Datei begonnen. Bei „false“ wird danach nicht weiter in die Datei geschrieben.
IntuneWinPackage.IntuneWinAppUtilPath Pflichtangabe. Vollständiger Pfad zur IntuneWinAppUtil.exe aus dem Microsoft Win32 Content Prep Tool. Das Tool wird aus Lizenzgründen nicht mitgeliefert und muss separat heruntergeladen werden.
IntuneWinPackage.IntuneWinFileDirectory Pflichtangabe. Ordner, in dem die erzeugten .intunewin-Dateien abgelegt werden.
IntuneWinPackage.OverwriteExistingPackages Bei „true“ werden vorhandene .intunewin-Dateien mit gleichem Namen überschrieben.
IntuneWinPackage.MaxIntuneWinFileSizeGb Maximale Größe einer .intunewin-Datei in GB, die nach Intune hochgeladen werden kann, standardmäßig 16. Intune selbst lässt bis zu 30 GB pro Applikation zu.
ConnectionStrings.DefaultConnection Verbindung zur Datenbank des Unified Application Managers, z. B. Server={SERVER}; Database=UnifiedApplicationManager; TrustServerCertificate=True; Trusted_Connection=True;. Wird vom Setup eingetragen.
ConnectionStrings.HangfireConnection Verbindung zur Datenbank für die Hintergrundverarbeitung des Schedulers. In der Regel identisch mit „DefaultConnection“. Wird vom Setup eingetragen.
AzureAuth.TenantId, AzureAuth.ClientId „Directory (tenant) ID“ und „Application (client) ID“ der App-Registrierung für die Anmeldung. Werden vom Setup eingetragen.
Customization.Title, Customization.LogoUri Titel und Logo, die in der Oberfläche angezeigt werden.
Proxy Proxyserver für ausgehende Verbindungen, z. B. zu Microsoft Graph. Bei „Enabled“ = „true“ werden die Adresse („Uri“) und gegebenenfalls die Anmeldedaten („User“, „Password“) verwendet.
Roles Zuordnung der Bereiche des Unified Application Managers zu den App-Rollen. Die Werte entsprechen dem „Value“ der Rollen in der App-Registrierung für die Anmeldung. Der Eintrag „UAM“ legt die Grundberechtigung für den Zugriff auf den Unified Application Manager fest, standardmäßig „App.Read“. Übersetzungen („Translation“) verwenden die Rollen der Konfiguration.
Settings.DeleteGroups Bei „true“ werden die vom Unified Application Manager angelegten Zuweisungsgruppen beim Löschen einer Applikation ebenfalls gelöscht.