Asp.net core mvc 如何在运行时更改AzureADOptions
我试图在运行时更改AzureADOptis。我尝试了以下操作,但在此之后,单击登录链接将使用旧值将其重定向到microsoft登录页面。期望是采取更新的选项Asp.net core mvc 如何在运行时更改AzureADOptions,asp.net-core-mvc,azure-active-directory,Asp.net Core Mvc,Azure Active Directory,我试图在运行时更改AzureADOptis。我尝试了以下操作,但在此之后,单击登录链接将使用旧值将其重定向到microsoft登录页面。期望是采取更新的选项 var options = new AzureADOptions { Instance = "https://login.microsoftonline.com/", Domain = "....", TenantId =
var options = new AzureADOptions
{
Instance = "https://login.microsoftonline.com/",
Domain = "....",
TenantId = "....",
ClientId = "....",
CallbackPath = "/signin-oidc"
};
_optionsCache.TryRemove(AzureADDefaults.AuthenticationScheme);
_optionsCache.TryAdd(AzureADDefaults.AuthenticationScheme, options);
您可以使用
OpenIdConnectOptions
,因为AzureADOptions
也将映射到库中的OpenIdConnectOptions
。您需要将openidconnectpostconfigurations
注入DI系统,并在之前调用\u postconfigurations.PostConfigure
\u options cache.TryAdd
:
ConfigureServices.cs
:
services.AddSingleton<OpenIdConnectPostConfigureOptions>();
private readonly IAuthenticationSchemeProvider _schemeProvider;
private readonly IOptionsMonitorCache<OpenIdConnectOptions> _optionsCache;
private readonly OpenIdConnectPostConfigureOptions _postConfigureOptions;
public HomeController(IAuthenticationSchemeProvider schemeProvider, IOptionsMonitorCache<OpenIdConnectOptions> optionsCache, OpenIdConnectPostConfigureOptions postConfigureOptions)
{
_schemeProvider = schemeProvider;
_optionsCache = optionsCache;
_postConfigureOptions = postConfigureOptions;
}
var OIDCoptions = new OpenIdConnectOptions
{
Authority = "https://login.microsoftonline.com/YourTenantID/",
ClientId = "YourClientID",
CallbackPath = "/signin-oidc"
};
_postConfigureOptions.PostConfigure(AzureADDefaults.OpenIdScheme, OIDCoptions);
_optionsCache.TryRemove(AzureADDefaults.OpenIdScheme);
_optionsCache.TryAdd(AzureADDefaults.OpenIdScheme, OIDCoptions);