【问题标题】:How to validate if user is part of group in Azure AD?如何验证用户是否属于 Azure AD 中的组?
【发布时间】:2019-01-12 05:47:50
【问题描述】:

我编写了一个托管在Open Shift 上的Python 应用程序。

用户登录应用程序后,他的权限取决于他在Azure Active Directory 中的组成员身份。

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

【问题讨论】:

  • 您好 Hemanth,我已更改您帖子的格式,使其更具可读性。我看你是新的。仅供参考。要创建新的句子或段落,您必须在段落之间放置一个空的新行。那么这个问题就更具可读性了。使用`字符突出私有名称也是一个很好的技术。你可以编辑你的问题,看看我做了什么。

标签: azure-active-directory


【解决方案1】:

您可以根据您的场景从您的应用程序中调用以下 Microsoft Graph API -

  1. Check member groups

    如果您已经知道要检查/验证成员资格的组,这将很有帮助。

     POST https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/checkMemberGroups 
    

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

     {
      "groupIds": [
           "fee2c45b-915a-4a64b130f4eb9e75525e",
           "4fe90ae065a-478b9400e0a0e1cbd540"
       ]
     }
    
  2. user: getMemberGroups

    如果您还不知道该组并想获取该用户所属的所有组,这将很有帮助。

     POST https://graph.microsoft.com/v1.0/users/{id | userPrincipalName}/getMemberGroups
    

您还可以通过编辑应用程序的清单(这可以直接在 Azure 门户中完成)并将 "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,其中讨论了类似的要求。它还提到考虑应用程序角色来做出授权决定,因为在某些情况下这可能更合适。

【讨论】:

  • 由于此请求特定于 python,Azure AD Python 特定指令是否可以修改上面的示例?上面给出的参考是针对.net的,这里是微软提供的python示例。 github.com/Azure-Samples/…
猜你喜欢
  • 2012-08-15
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 2019-03-13
  • 1970-01-01
相关资源
最近更新 更多