一个使用Azure AD B2C的多个客户端ID(应用程序ID)的ASP.NET Core 2.2 Web API应用程序

时间:2019-01-15 01:19:52

标签: c# asp.net-core openid-connect azure-ad-b2c asp.net-core-2.2

我有使用Azure AD B2C进行身份验证的ASP.NET 2.2 Web API应用

我有三个角色要求。每个角色都有不同的Azure AD B2C策略,一个用户只能有一个角色。

当前在B2C中添加角色的过程令人费解:

https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/10123836-get-user-membership-groups-in-the-claims-with-ad-b

Authorize By Group in Azure Active Directory B2C

为了解决每个角色的角色和策略,我正在考虑在一个ASP.NET Core Web API中包含多个Azure AD B2C应用程序。

我在Startup.cs中针对Azure AD B2C的ASP.NET Config如下:

services.AddAuthentication(AzureADB2CDefaults.JwtBearerAuthenticationScheme)
.AddAzureADB2CBearer(o => Configuration.Bind("AzureAdB2C", o));

ASP.NET Core中是否可以有多个Azure AD B2C ClientID(应用程序ID)?有图书馆这样做吗?您有更好的建议吗?

1 个答案:

答案 0 :(得分:0)

我建议在通知函数s(例如,SecurityTokenValidated)之一中获取用户的组信息,然后将声明添加到ClaimsPrincipal。您可以单击here以获得代码示例。

如果注册多个应用程序,并且使用OAuth 2.0 code grant flow,则在将用户重定向到Azure AD的登录页面时,应提供客户端ID,在知道谁是当前用户之前,如何知道应使用哪个客户端ID?除非您创建额外的页面来让用户选择他要登录的客户端,然后为OpenIdConnectEvents事件添加OnRedirectToIdentityProvider处理程序并在那里替换ClientId属性。