我正在查询我的Azure AD图形API以获得用户的组成员资格。我可以把查询做得很好,但结果只是用户直接所属的组。没有列出任何嵌套组。
我正在试图找出一个用户是否属于某个特定的组,但是我不想要进行超过100个api调用才能找到答案。(也就是说,用户属于GroupA,它是GroupB的成员,GroupC的成员,GroupD的成员。)组B、C和D不会出现在用户的组列表中,即使他在技术上属于它们--只有GroupA)。
有没有办法在一个API调用或另一个API调用中获得所有组成员身份?当我使用集成Windows身份验证时,IsInRole(GroupD)将返回true。不过,Azure身份验证和任何声称拥有重新实现IsInRole的代码的帖子都无法使用这一点,它们只是对user.memberOf (它不执行嵌套组)进行相同的调用。
仅供参考,这是我打电话的代码。
var client = AuthenticationHelper.GetActiveDirectoryClient();
var user = await client.Users.GetByObjectId(objectId).ExecuteAsync();
var userFetcher = (IUserFetcher)user;
var pagedCollection = await userFetcher.MemberOf.ExecuteAsync();
do
{
var directoryObjects = pagedCollection.CurrentPage.ToList();
foreach (var group in directoryObjects.OfType<Group>().Select(directoryObject => directoryObject))
{
groupMembership.Add(group);
}
pagedCollection = await pagedCollection.GetNextPageAsync();
}
while (pagedCollection != null && pagedCollection.MorePagesAvailable);发布于 2015-01-28 19:18:46
是。getMemberObjects API返回用户是其成员的所有组(传递组):https://msdn.microsoft.com/en-us/library/azure/dn835117.aspx。此外,使用checkMemberGroups API,您可以检查用户是否是组的成员(临时的):https://msdn.microsoft.com/en-us/library/azure/dn835107.aspx
然而,对于您的需求,Azure的应用程序角色特性可能更适合。您的应用程序可以声明应用程序角色,管理员可以将这些角色分配给用户和组。当用户登录到您的应用程序时,Azure AD计算分配给他们的应用程序角色,并将它们发送到角色声明中。不需要在运行时查询图形。见此处:http://www.dushyantgill.com/blog/2014/12/10/roles-based-access-control-in-cloud-applications-using-azure-ad/
https://stackoverflow.com/questions/28200071
复制相似问题