Konfigurace - verisoftCZ/verisoft-framework GitHub Wiki
Appsettings dělíme podle prostředí. Příklad: appsettings.json appsettings.Local.json - lokální prostředí pro docker-compose appsettings.DEV.json appsettings.DEVExternal.json - stejný jako DEV, ale dev poižívá interní adresy, zde používám například public IP pro DB jinak bych se na ní nedostal appsettings.TEST.json appsettings.PROD.json
obecné appsetitngs:
//může obsahovat i další, pouze ilustrativní příklad
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Information"
}
},
"HangfireJobs": {
"JobOneSettings": "0 0 * * *",
"JobTwoSettings": "0 1 * * *"
},
"AllowedHosts": "*",
"apiSecret": "KEY_TO_DECODE_JWT_TOKEN"
}
pro specifické prostředí pak používáme konkrétní settings:
{
"Database": {
"ConnectionString": "CONNECTION_STRING_FOR_DEV"
},
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://0.0.0.0:80"
}
}
}
}
pokud nechceme uchovávat citlivé konfigurace v appsettings.json je možné využít Azure Key Vault:
Předpokladem je založený Azure Key Vault + App registrace v azure portále
Po založení key vault a app registrace je možné propojení key vaultu a aplikace v nastavení key vault.
V .net aplikaci je pak možné číst key vault secrets, stejně jako kdyby šlo a hodnoty v appsettings:
Například výše uvedený Database.ConnectionString bude v KV zapsán takto:
v Program.cs je nutné zaregistorvat KV:
var builder = WebApplication.CreateBuilder(args);
builder.AddAzureKeyVault(builder.Configuration);
v appsettings.json:
"KeyVault": {
"Uri": "https://verisoft-internal-vault.vault.azure.net/",
},
"AzureAd": {
"TenantId": "<TenantId>",
"ClientId": "<ClientId>",
}
Pro spojení je nutné ještě definovat ClientSecret. Ideálně by neměl být uložen v appsettings čím opět vystavujeme citlivé údaje.
Takže doporučuji si ho nastavit do například do env variables: