Параметры внутри secrets.json не загружались в веб-сборку ASP.NET Core Blazor

Я использую ASP.NET Core 3.1, Visual Studio 16.7.3.

У меня есть ключ API, который нужно использовать в моем blazor wasm приложении. Однако я не хочу помещать значение в appsettings.json, чтобы убедиться, что API Key не попадает в мой исходный элемент управления. Один из таких способов - использовать secrets.json в ASP.NET Core. Но значение из secrets.json не загружается в моем Program.cs.

appsettings.json:

{
  "APIKey": "appsettings.json"
}

Program.cs:

var builder = WebAssemblyHostBuilder.CreateDefault(args);

Debug.WriteLine($"APIKey:{builder.Configuration["APIKey"]}"); // works appsettings.json is logged in output window

Если я перемещу ключ с appsettings.json на secrets.json

secrets.json:

{
  "APIKey": "secrets.json"
}

тогда журнал окна вывода пуст. secrets.json больше не работает в blazor wasm?


person fingers10    schedule 15.09.2020    source источник
comment
Проблема в том, что все, что выполняется в браузере, видно пользователям. Blazor WASM работает на клиенте. Даже если вы используете секретную семантику, в какой-то момент это становится очевидным в вашем коде. Во всех документах говорится, что никогда не используйте секреты в клиентском блейзере.   -  person Andy    schedule 15.09.2020
comment
вы можете попробовать это: stackoverflow.com/a/62701224/1204153   -  person Andy    schedule 15.09.2020
comment
а как же лицензионные ключи. Например, если я использую какие-либо лицензированные компоненты пользовательского интерфейса сторонних производителей, которые необходимо зарегистрировать в program.cs с лицензионным ключом, например builder.Services.Add3rdPartyUIComponents("License Key"). И как сохранить этот ключ в секрете?   -  person fingers10    schedule 15.09.2020
comment
У кого-то был точно такой же вопрос: github.com/dotnet/aspnetcore/issues/23620   -  person Andy    schedule 15.09.2020
comment
Я попытался решить эту проблему, и лучшее, что я мог сделать, это запросить ее с сервера, и он извлек эту информацию из секретов. На этом этапе соединение только https ... Однако ключи были удалены из моего исходного кода.   -  person Brian Parker    schedule 15.09.2020
comment
@BrianParker Не могли бы вы подробнее рассказать о том, что вы сделали?   -  person fingers10    schedule 15.09.2020
comment
@ finger10 По сути, я загружаю эквивалент настроек приложения из конечной точки API. Преобразуйте это в MemoryConfigurationSource . var clientConfigurations = ждать построителя.LoadConfigFromServerAsync (api / clientconfigurations); builder.Services.AddScoped (sp = ›clientConfigurations);   -  person Brian Parker    schedule 15.09.2020