如何验证用户是否是Azure AD中的组的一部分?

Hem*_*nth 4 azure-active-directory

我已经在上编写了一个Python应用程序Open Shift

用户登录到应用程序后,将根据其在中的组成员身份来确定其特权Azure Active Directory

如何Azure Active Directory通过我的应用程序验证用户是否属于某个组?

Roh*_*gal 6

您可以根据自己的情况从应用程序中调用以下Microsoft Graph API:

  1. 检查会员组

    如果您已经知道要检查/验证其成员身份的组,则此功能将非常有用。

     POST https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/checkMemberGroups 
    
    Run Code Online (Sandbox Code Playgroud)

    在请求正文中,您可以提供groupdIds,即一个集合,其中包含要检查成员资格的组的对象ID。最多可以指定20个组。

     {
      "groupIds": [
           "fee2c45b-915a-4a64b130f4eb9e75525e",
           "4fe90ae065a-478b9400e0a0e1cbd540"
       ]
     }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 用户:getMemberGroups

    如果您还不了解该组,并且想要获取该用户所属的所有组,则此功能将非常有用。

     POST https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/getMemberGroups
    
    Run Code Online (Sandbox Code Playgroud)

您还可以通过编辑应用程序的清单(可以直接在Azure Portal中完成)并将"groupMembershipClaims"属性设置为"All""SecurityGroup"根据需要,使组声明作为应用程序的访问令牌的一部分进入。

但是groupMemembershipClaims有一个问题,该令牌并不总是与用户所属的所有组一起出现。如果用户是太多组的成员(AFAIK是6个或更多),则您只会返回超额指示器声明,例如hasGroups告诉您该用户是许多组的成员,并且应该调用graph api来获取所有组的列表。这就是我强调相关的Microsoft Graph API的原因。

这是一个基于组声明进行授权的示例应用程序。它使用.NET 4.5 MVC,C#,但概念相同-

使用Azure AD组和组声明在Web应用中进行授权

这是另一个SO Post,其中讨论了类似的要求。它还提到考虑使用应用程序角色来做出授权决策,因为在某些情况下这样做可能更合适。