我在应用程序启动时加载 keyvault 机密,并且配置添加了保管库机密 ,正如我们在此处看到的那样。我正在使用 Microsoft.Identity.Web 添加 AD SSO 并注册 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));
- 在应用程序引导上,以下变量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>();
.......
......
}
任何帮助深表感谢。
谢谢