我想知道是否可以使用可以对多个AzureAd配置进行身份验证的IdentityServer 4设置.NET Core应用程序。
当前,您可以添加1个AzureAD配置,如下所示:
services.AddAuthentication()
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
但是我希望能够使用AzureAd对来自多个组织的用户进行身份验证。如此不同的TenantId ...等
这必须根据用户界面中选择的组织即时进行。
我该怎么做?
答案 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);