Azure AD Graph API User memberOf nested groups
Azure AD Graph API User memberOf nested groups
我正在查询我的 Azure AD 图 API 以获得用户的组成员身份。
我可以很好地进行查询,但结果只是用户直接所属的组。列出了 None 个嵌套组。
我正在尝试查明用户是否属于特定组,但我不想进行 100 多次 api 调用才能查明. (即用户属于 GroupA,GroupA 是 GroupB 的成员,GroupC 是 GroupD 的成员。B、C 和 D 组不会出现在用户的组列表中,即使他在技术上属于它们- 仅 A 组)。
有没有什么方法可以在一个 API 电话或其他电话中获得所有群组成员资格?当我使用 Integrated Windows 身份验证时,IsInRole(GroupD) 会返回 true。但是,这不适用于 Azure AD 身份验证,并且任何声称具有重新实现 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);
是的。 getMemberObjects API returns 用户所属的所有组(传递):https://msdn.microsoft.com/en-us/library/azure/dn835117.aspx . Also, using the checkMemberGroups API you can check whether or not the user is member of a group (transitively): https://msdn.microsoft.com/en-us/library/azure/dn835107.aspx
但是,对于您的要求,Azure AD 的应用程序角色功能可能更适合。您的应用程序可以声明应用程序角色,管理员可以将这些角色分配给用户和组。当用户登录到你的应用程序时,Azure AD 会计算已分配给他们的应用程序角色,并将它们发送到角色声明中。无需在运行时查询图形。看这里:http://www.dushyantgill.com/blog/2014/12/10/roles-based-access-control-in-cloud-applications-using-azure-ad/
我正在查询我的 Azure AD 图 API 以获得用户的组成员身份。 我可以很好地进行查询,但结果只是用户直接所属的组。列出了 None 个嵌套组。
我正在尝试查明用户是否属于特定组,但我不想进行 100 多次 api 调用才能查明. (即用户属于 GroupA,GroupA 是 GroupB 的成员,GroupC 是 GroupD 的成员。B、C 和 D 组不会出现在用户的组列表中,即使他在技术上属于它们- 仅 A 组)。
有没有什么方法可以在一个 API 电话或其他电话中获得所有群组成员资格?当我使用 Integrated Windows 身份验证时,IsInRole(GroupD) 会返回 true。但是,这不适用于 Azure AD 身份验证,并且任何声称具有重新实现 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);
是的。 getMemberObjects API returns 用户所属的所有组(传递):https://msdn.microsoft.com/en-us/library/azure/dn835117.aspx . Also, using the checkMemberGroups API you can check whether or not the user is member of a group (transitively): https://msdn.microsoft.com/en-us/library/azure/dn835107.aspx
但是,对于您的要求,Azure AD 的应用程序角色功能可能更适合。您的应用程序可以声明应用程序角色,管理员可以将这些角色分配给用户和组。当用户登录到你的应用程序时,Azure AD 会计算已分配给他们的应用程序角色,并将它们发送到角色声明中。无需在运行时查询图形。看这里:http://www.dushyantgill.com/blog/2014/12/10/roles-based-access-control-in-cloud-applications-using-azure-ad/