多个 Web 应用的 Azure B2C 身份验证和授权

Azure B2C Authentication & Authorization for Multiple Web Apps

我创建了一个 Azure B2C。我有多个调用此 B2C 的 .Net Web 应用程序,以允许内部和外部用户登录和访问我们的应用程序。我需要的是一种能够将用户分配给应用程序的方法,例如 John Doe 可以访问 WebApp1 但不能访问 WebApp2,并且他对 WebApp1 的角色是管理员。而 Jane Doe 可以访问 WebApp1 和 WebApp2,并且她的角色是这两个应用程序的用户。我需要这份授权书。有谁知道这样做的方法吗?我知道普通的 Azure 有组和角色,但据我所知,B2C 似乎不允许您创建任何这些。

Features not applicable in Azure AD B2C tenantsApplication roles are Not currently available for Azure AD B2C.

由于 B2C 用于消费者帐户或身份,他们 sign-up 创建帐户,并且管理员不应该能够将他们的帐户添加到将角色分配给他们 identities.in 这样的应用您可以使用标准 Azure AD 的情况。

但是我们可以使用 custom claims in B2C 用户在注册时选择所需的角色。

因此,所需的角色必须经过授权 process.For 应用程序必须配置角色。

例如在 .net 中,您可以为 users.For 示例的特定控制器操作配置扩展角色,创建一个名为 AADRole 的自定义属性。为不同的用户赋值(即其对某些应用的角色访问权限),然后在B2C用户登录后从id token中获取claim。

services.AddAuthorization(options =>
{
      options.AddPolicy("Admin", policy =>
         policy.RequireClaim("extension_Role", "Admin"));
});

通过使用授权属性

[Authorize(Policy = "Admin")]

参考资料:

  1. using-custom-claims-for-azure-ad-b2c-roles