多个Azure AD身份验证服务器4

时间:2020-03-26 17:04:47

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

我想知道是否可以使用可以对多个AzureAd配置进行身份验证的IdentityServer 4设置.NET Core应用程序。

当前,您可以添加1个AzureAD配置,如下所示:

services.AddAuthentication()
            .AddAzureAD(options => Configuration.Bind("AzureAd", options));

但是我希望能够使用AzureAd对来自多个组织的用户进行身份验证。如此不同的TenantId ...等

这必须根据用户界面中选择的组织即时进行。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用AddOpenIdConnect中间件:

services.AddAuthentication()
.AddOpenIdConnect("AADTenant1", "AADTenant1", options =>
{
    options.ClientId = "<app1>";
    options.Authority = "https://login.microsoftonline.com/<tenant1>/";             
    options.CallbackPath = "/signin-oidc-aadtenant1";            
    options.SaveTokens = true;                                 
    options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;

})
.AddOpenIdConnect("AADTenant2", "AADTenant2", options =>
{
    options.ClientId = "<app2>";
    options.Authority = "https://login.microsoftonline.com/<tenant2>/";             
    options.CallbackPath = "/signin-oidc-aadtenant2";
    options.SaveTokens = true;
    options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;

})

并触发您要挑战的方案:

var callbackUrl = Url.Action("ExternalLoginCallback");

var props = new AuthenticationProperties
{
    RedirectUri = callbackUrl,
    Items =
    {
        { "scheme", provider },
        { "returnUrl", returnUrl }
    }
};

return Challenge(provider, props);