我已经写了一个Python
上托管的Open Shift
应用程序。
用户登录到应用程序后,其特权取决于他在Azure Active Directory
中的组成员身份。
如何通过我的应用程序验证用户是否属于Azure Active Directory
中的组的成员?
答案 0 :(得分:3)
您可以根据情况从应用程序中调用以下Microsoft Graph API-
如果您已经知道要检查/验证其成员身份的组,则此功能将很有帮助。
POST https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/checkMemberGroups
在请求正文中,您可以提供groupdIds
,即一个集合,其中包含要检查成员资格的组的对象ID。最多可以指定20个组。
{
"groupIds": [
"fee2c45b-915a-4a64b130f4eb9e75525e",
"4fe90ae065a-478b9400e0a0e1cbd540"
]
}
如果您还不知道该组,并且想要获取该用户所属的所有组,则将很有帮助。
POST https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/getMemberGroups
您还可以通过编辑应用程序的清单(可以直接在Azure Portal中完成)并将"groupMembershipClaims"
属性设置为"All"
来使组声明作为应用程序的访问令牌的一部分出现或根据需要"SecurityGroup"
。
尽管groupMemembershipClaims有一个问题,但该令牌并不总是随用户所属的所有组一起出现。如果用户是太多组的成员(AFAIK是6个或更多),您只会返回超额指示符,例如hasGroups
,它告诉您该用户是许多组的一部分,因此应调用graph api来获取所有组的列表。这就是我强调相关的Microsoft Graph API的原因。
这是一个基于组声明进行授权的示例应用程序。它使用.NET 4.5 MVC,C#,但概念相同-
Authorization in a web app using Azure AD groups & group claims
这里是另一个SO Post,其中讨论了类似的要求。它还提到考虑使用应用程序角色来做出授权决策,因为在某些情况下这样做可能更合适。