背景
目前,我正致力于在我们自己的门户中实现 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
属性确实有效,这应该是正确的。有任何想法吗?
最佳答案
不幸的是,文档对该主题有点含糊,但目前,/v1.0
端点不支持扩展 memberOf
属性。然而,/beta
端点支持它。
我的建议是为此调用切换到 /beta
。通常指导原则是避免在生产中使用 Beta。 v1.0 和 Beta 实体之间通常存在细微的架构差异,并且此端点可以(并且确实)在没有警告的情况下接收重大更改。但是,在这种特定情况下,这应该不是问题,因为您扩展了 v1.0 中已经存在的属性(尽管当前无法使用)/
关于azure - 使用 Microsoft Graph 扩展 MemberOf 不会填充组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50097989/