Я загружаю секреты keyvault, когда приложение запускается, и в конфигурацию добавляются секреты хранилища , как мы видим здесь . Я использую Microsoft.Identity.Web для добавления единого входа в AD и регистрирую AddSignin (), как указано в примерах. Но секрет не сериализуется, как ожидалось на данный момент . Однако, если секреты хранятся в appsettings. json, он работает нормально. Как я могу сделать эту работу? Требуется явная десериализация?
Ниже приведен полный код настройки
1.Program.cs имеет следующий код.
ConfigureAppConfiguration((hostingCtx, config) =>
{
if (hostingCtx.HostingEnvironment.IsProduction())
{
var builtConfig = config.Build();
AzureKeyVaultConfigurationExtensions.AddAzureKeyVault(config, builtConfig["AppConfiguration:KeyVaultUrl"]);
}
})
Секрет в следующем формате json хранится в keyvault
{"CallbackPath":"/home/index","ClientId":"######","ClientSecret":"#######","Domain":"######","Instance":"######","TenantId":"######"}
Добавлена ссылка на Microsoft.Identity.Web
Зарегистрирован нижеуказанный сервис в Startup.cs-> ConfigureService
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddSignIn("AzureAd1", configuration, options => configuration.Bind("AzureAd1", options));
В приложении bootstrap приведенная ниже переменная
microsoftIdentityOptions пусто
Файл - WebAppServiceCollectionExtensions.cs
public static AuthenticationBuilder AddSignIn(
this AuthenticationBuilder builder,
string configSectionName,
IConfiguration configuration,
string openIdConnectScheme,
string cookieScheme,
Action<OpenIdConnectOptions> configureOptions,
bool subscribeToOpenIdConnectMiddlewareDiagnosticsEvents = false)
{
builder.Services.Configure(openIdConnectScheme, configureOptions);
builder.Services.Configure<MicrosoftIdentityOptions>(options => configuration.Bind(configSectionName, options));
var microsoftIdentityOptions = configuration.GetSection(configSectionName).Get<MicrosoftIdentityOptions>();
.......
......
}
Любая помощь глубоко ценится.
Спасибо