我想了解如何定义自定义用户属性和
“Azure AD”的角色与我们的共享属性和角色
认证后申请。这是我们的网络所必需的
提供访问控制的应用程序(基于用户 ID 和角色)
无需在本地定义角色。
您需要使用 Azure AD 查看与应用程序角色相关的功能,以实现您的自定义 RBAC。它很可能应该为您提供您正在寻找的东西。
在旁注中,我看到人们根据用户所属的组选择执行一些授权逻辑的情况。这只是信息,而不是您需要做的事情。
我在这个答案中分享了与角色和组相关的示例,但一定要先查看应用程序角色,一旦你清楚地理解它们,你就可以决定使用应用程序角色、组或角色和组的组合(很有可能)为您的授权策略。
应用程序角色
微软文档 - Application Roles
用途 - 这些角色在应用程序清单中为您的组织正在开发并在您的 Azure Active Directory 中注册的应用程序定义。这些角色非常特定于您的应用程序,可以在应用程序代码中用于为经过身份验证的用户实现授权逻辑。
示例应用程序(使用此概念并满足您的需求)-
Authorization in a web app using Azure AD application roles & role claims
快速说明
1) 向 Azure AD 注册应用程序后,您可以通过在 Azure AD 中编辑应用程序清单 (JSON) 来定义自定义角色(特定于您的应用程序)。
以下是应用程序角色定义的示例 JSON:
"appRoles":
[
{
"allowedMemberTypes": [
"User"
],
"description": "Creators can create Surveys",
"displayName": "SurveyCreator",
"id": "1b4f816e-5eaf-48b9-8613-7923830595ad",
"isEnabled": true,
"value": "SurveyCreator"
},
{
"allowedMemberTypes": [
"User"
],
"description": "Administrators can manage the Surveys in their tenant",
"displayName": "SurveyAdmin",
"id": "c20e145e-5459-4a6c-a074-b942bbd4cfe1",
"isEnabled": true,
"value": "SurveyAdmin"
}
]
2) 您将能够通过 Azure 门户或以编程方式将这些角色分配给用户/组/应用程序。 (您可以控制角色允许的成员类型)
3) 现在,当最终用户登录到您的应用程序时,传入的 Azure AD 令牌将为您提供一组角色声明(基于分配给用户的任何角色),您可以在应用程序中做出授权决定。
if (context.User.HasClaim(ClaimTypes.Role, "Admin")) { ... }
组
组可以有多个用户或其他组作为成员。同样可以通过 Azure 门户或以编程方式管理组。
注意:组完全独立于您的应用程序,即即使没有您的应用程序,Azure AD 组也可以而且确实存在用于对成员进行分组的目的。另一方面,应用程序角色非常特定于您的应用程序,除了您的应用程序之外,它们对任何人都没有多大意义。
基于组做出决策的示例应用
Authorization in a web app using Azure AD groups & group claims