Пользовательский appsettings.json не загружается - PullRequest
0 голосов
/ 07 мая 2018

У меня есть приложение .net core 2.0 с несколькими файлами настроек. У меня есть appsettings.json, appsettings.Development.json и пользовательский appsettings.Secure.json.

//appSettings.json

{
  "AzureAd" : {
    "ClientId" : "CID"
  }
}

//appSettings.Development.json
{
  "AzureAd" : {
   "Random" : "random2"
 } 
}

//appSettings.Secure.json
{
  "AzureAd" : {
    "ClientSecret" : "CSECRET"
  }
}

Я всегда хочу, чтобы мои конфиги appSettings.Secure.json были загружены. Вот как настроены файлы json.

 var config = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appSettings.json", optional : false)
                .AddJsonFile("appSettings.Development.json")
                .AddJsonFile("appsettings.Secure.json", optional: true, reloadOnChange: true)
                .AddEnvironmentVariables()
                .Build();

Проблема заключается в том, что мой «AzureAd: ClientSecret» загружается в конфигурации (отображается в разделе «Поставщики» объекта конфигурации), но когда я внедряю IOption, свойство ClientSecret имеет значение null.

AzureAdOptions - это класс, которому сопоставляются свойства, и он регистрируется следующим образом:

services.Configure<AzureAdOptions>(Configuration.GetSection("AzureAd"));

1 Ответ

0 голосов
/ 07 мая 2018

JSON никоим образом не является безопасным, особенно если учесть, что это, вероятно, передается вашему контролю исходного кода.

Файл appsettings.json предназначен для общей конфигурации, специфичной для среды. Затем у вас должно быть appsettings.{environment}.json файлов для каждой среды, но ни в одном из этих файлов не должно быть секретов. В процессе разработки вы можете использовать секреты пользователей для хранения своих секретов. На производстве вы должны использовать что-то вроде хранилища ключей Azure и / или переменных среды для секретов.

Короче говоря, ваш файл appsettings.Secure.json не должен существовать в первую очередь. Это не среда, и она не безопасна.

...