Как изменить AzureADOptions во время выполнения - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь изменить 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);

1 Ответ

0 голосов
/ 06 марта 2020

Вы можете использовать OpenIdConnectOptions, поскольку AzureADOptions также будет отображаться в OpenIdConnectOptions в библиотеке. И вам нужно ввести 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...