使用Microsoft Graph扩展MemberOf不会填充组

时间:2018-04-30 09:49:56

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

背景
目前,我正在我们自己的门户网站中实施Azure Active Directory用户管理,以便为我们不希望在Azure门户中窥探的用户启用用户管理。我已经使用应用程序权限实现了它,因此我们可以为这个特定的应用程序提供Azure管理员授予权限。 RBAC与我们应用程序中的用户角色一起确保只有授权用户才能使用该功能。

我们想要启用的一项功能是邀请用户加入我们的Azure Active Directory租户。我设法实现了那个,一切看起来都很棒。下一步是实现具有指定角色的用户概述。

顺便说一句,这些是必需的(和授予的)权限:

  • 邀请访客用户加入组织
  • 阅读所有群组
  • 读取目录数据
  • 阅读所有用户的完整个人资料

问题
让用户进入租户是没有问题的。获取用户列表的MemberOf信息不起作用。经过一些搜索后,我发现您的应用程序需要Directory.Read.All权限(List memberOf上的文档)。我添加了权限,对预期的代码进行了测试:没有。 MemberOf属性始终为null

的情景:
为所有用户扩展MemberOf:

var allUsers = await _graphClient.Users.Request().Expand(u => u.MemberOf).GetAsync();

为特定用户扩展MemberOf:

var user = await _graphClient.Users[userId].Request().Expand(u => u.MemberOf).GetAsync();

工作的场景 让所有团体扩大成员:

var groupsWithMembers = await _graphClient.Groups.Request().Expand(g => g.Members).GetAsync();

获取特定用户的MemberOf信息:

var userGroups = await _graphClient.Users[userId].MemberOf.Request().GetAsync();

问题
简而言之:我在这里错过了什么?据我所知,我已经设置了应用程序所需的权限,而且我正在使用像记录的SDK。鉴于扩展用户的Members属性 可以正常工作,这应该是正确的。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

遗憾的是,该文档对该主题略显含糊,但目前/v1.0端点并不支持扩展memberOf属性。然而,它由/beta端点支持。

我的建议是切换到/beta进行此次通话。通常,指导是避免在生产中使用Beta。 v1.0和Beta实体之间通常存在细微的架构差异,并且此端点可以(并且确实)在没有警告的情况下接收重大更改。但是,在这种特定情况下,它不应该是一个问题,因为您扩展了v1.0中已存在的属性(虽然目前无法使用)/