0

有没有办法获取用户所属的组,这样我们就可以处理身份验证,甚至抛出异常,这样令牌就不会被创建。

我们需要组的原因是我们无法在 Azure AD 中创建 OU,而之前我们可以在 LDAP 中创建。我们检索了专有名称,因此获得了有关该用户的非常丰富的信息。

最后,我们确实看到您可以在本地创建一个 OU,但读取到 Graph API 无法识别它或无法检索它。

我们正在尝试在SecurityTokenValidated身份验证过程的阶段执行逻辑,并且每当我们尝试使用时都会中断该过程:

string UPN = context.AuthenticationTicket.Identity.FindFirst(ClaimTypes.Name).Value

这是因为我们使用的是 MSAL 吗?

4

1 回答 1

2

您在此处采用的最佳方法是利用 Azure AD 的组声明功能。(对于获取 OU。Azure AD 中根本不表示 OU。)

Dushyant Gill 关于此的博客文章相对较旧,但仍然非常相关:http ://www.dushyantgill.com/blog/2014/12/10/authorization-cloud-applications-using-ad-groups/ 。简而言之,过程是:

  1. 通过在应用程序中设置groupMembershipClaims属性为您的应用程序启用组声明。设置后,当用户登录到您的应用程序时,他们所属的组列表将包含在令牌中(如果组数小于限制)。
  2. 更新应用程序的授权代码以使用组成员声明(如果存在)。
  3. 如果不存在组成员资格声明(即,如果存在“超额”声明),请更新您的应用程序以查询 Azure AD Graph API。仅当用户是超过 150-250 个组的成员时才会发生这种情况。(使用_claim_nameand_claim_sources声明表示需要直接调用 Graph API。)

Azure AD Graph API 权限文档中所述,为了让您的应用程序调用该getMemberGroups方法,该应用程序必须具有“读取所有组”权限 (Groups.Read.All)。此权限需要管理员同意,但一旦获得同意,就可以使用登录用户的访问令牌发出请求。

于 2017-03-14T23:50:24.040 回答