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