我创建了一个 Azure B2C。我有多个 .Net Web 应用程序调用此 B2C 以允许内部和外部用户登录和访问我们的应用程序。我需要的是一种能够将用户分配给应用程序的方法,例如 John Doe 可以访问 WebApp1,但不能访问 WebApp2,并且他对 WebApp1 的角色是管理员。而 Jane Doe 可以访问 WebApp1 和 WebApp2,并且她的角色是这两个应用程序的用户。我需要这份授权书。有谁知道有什么方法可以做到这一点?我知道普通的 Azure 有组和角色,但据我所知,B2C 似乎不允许您创建任何这些。
最佳答案
根据Features not applicable in Azure AD B2C tenants 应用程序角色目前不适用于 Azure AD B2C。
由于 B2C 用于消费者帐户或身份,他们注册以创建帐户,管理员不应将其帐户添加到应用程序中,并将角色分配给他们的身份。在这种情况下,您可以使用标准 Azure AD 。
但是我们可以利用custom claims in B2C消费者在注册时选择所需的角色。
因此所需的角色必须经过授权过程。为此,必须为该应用程序配置角色。
例如,在 .net 中,您可以为用户的特定 Controller 操作配置扩展角色。例如,创建名为 AADRole 的自定义属性。为不同的用户分配一个值(即对某些应用程序的角色访问权限),然后在B2C用户登录后从id token中获取声明。
services.AddAuthorization(options =>
{
options.AddPolicy("Admin", policy =>
policy.RequireClaim("extension_Role", "Admin"));
});
通过使用授权属性
[Authorize(Policy = "Admin")]
引用文献:
关于多个 Web 应用程序的 Azure B2C 身份验证和授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72394340/