【问题标题】:How to change AzureADOptions at runtime如何在运行时更改 AzureADOptions
【发布时间】:2020-03-06 14:13:59
【问题描述】:

我正在尝试在运行时更改 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);

【问题讨论】:

    标签: asp.net-core-mvc azure-active-directory


    【解决方案1】:

    您可以使用OpenIdConnectOptions,因为AzureADOptions 也将映射到库中的OpenIdConnectOptions。你需要将OpenIdConnectPostConfigureOptions注入DI系统并在_optionsCache.TryAdd之前调用_postConfigureOptions.PostConfigure

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-12
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多