asp.net-core-mvc - 如何在运行时更改 AzureADOptions
问题描述
我正在尝试在运行时更改 AzureADOptis。我尝试了以下操作,但在此之后,单击登录链接将使用旧值将其重定向到 Microsoft 登录页面。期望是采取更新的选择。
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
sinceAzureADOptions
也将映射到OpenIdConnectOptions
in library 。并且您需要注入 OpenIdConnectPostConfigureOptions
DI 系统并_postConfigureOptions.PostConfigure
在之前调用_optionsCache.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);
推荐阅读
- c++ - 从 'char' 到 'const char*' [-fpermissive] 错误的无效转换
- reporting-services - SSRS 报表生成器 - 显示一个表中的所有汇总行和关联的数据行
- javascript - 如何从按钮中提取名称(jQuery 导航)?
- node.js - 如何在特定模型下使用节点js在mongodb中上传图像
- java - java - 通过正则表达式过滤日志文件
- python - 列表循环中的函数没有在python中一一运行
- database - 为什么数据被两次添加到同一个表中?
- c# - 错误 CS0246:找不到类型或命名空间名称“节点”(您是否缺少 using 指令或程序集引用?)
- r - 为什么来自 shinycssloaders 的 R Shiny Loading Spinner 没有出现
- android-studio - 对 recyclerview 和 imageview 大小感到困惑