身份验证过程获取用户所属的Azure AD组并执行逻辑操作

时间:2017-03-14 21:47:20

标签: azure-active-directory microsoft-graph msal

有没有办法让Group成为User的成员,这样我们就可以处理身份验证,甚至抛出异常,因此不会创建令牌。

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

您最好的方法是使用Azure AD的群组声明功能。 (并且对于获取OU。根本不在Azure AD中表示OU。)

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

  1. setting the groupMembershipClaims property in your application为您的应用启用群组声明。设置此项后,当用户登录您的应用程序时,他们所属的组列表将包含在令牌中(如果组的数量小于限制)。
  2. 更新您的应用程序的授权码,以使用群组成员资格声明(如果有)。
  3. 如果组成员资格声明不存在(即如果存在" overage"声明),则更新您的应用程序以查询Azure AD Graph API。仅当用户是超过150-250组的成员时才会发生这种情况。 (使用_claim_name_claim_sources声明作为需要直接调用Graph API的指示。)
  4. 正如the documentation for Azure AD Graph API permissions中所述,为了让您的应用程序调用{​​{3}}方法,应用程序必须具有"读取所有组"权限(Groups.Read.All)。此权限需要管理员同意,但一旦获得同意,就可以使用已登录用户的访问令牌进行请求。