![](/img/trans.png)
[英]MVC5 How can I retrieve all users from Azure Active Directory
[英]MVC5 how to iterate through an azure active directory user group
我设法通过使用从AAD获得了想要的小组
ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(serviceRoot,
async () => await GetTokenForApplication());
// use the token for querying the graph to get the user details
var result = await activeDirectoryClient.Groups.Where(u => u.DisplayName.Equals("myGroupName")).ExecuteAsync();
但是我不确定如何遍历所获得的组并将该组中的所有用户添加到列表中。
做这个:
List<IGroup> groups = result.CurrentPage.ToList();
foreach (IGroup group in groups)
{
// do whatever you need to
}
编辑
IGroup是否具有和属性,该属性使我能够获取该组中的用户(例如成员)
是的,但是您需要明确要求对其进行扩展。 以下是获取该组所有用户的方法:
var groups = await activeDirectoryClient.Groups
.Where(g => g.DisplayName == groupName).Expand(g => g.Members)
.ExecuteAsync();
var usersForGroup = new List<User>();
foreach(IGroup thisGroup in groups)
{
do
{
var thisGroupUsers =
thisGroup.Members.CurrentPage.Select(m => m as User)).Where(u => u != null);
allUsers.AddRange(thisGroupUsers);
// get next page asynchronously
await thisGroup.Members.GetNextPageAsync();
} while(thisGroup.Members.MorePagesAvailable)
}
有了群组的对象ID时,您可以在图形API中使用以下URL获取直接成员:
https://graph.windows.net/myorganization/groups/{object_id}/$links/members?api-version
您在代码中获得的IGroup
结果(例如,使用result.First()
)确实包含一个Members
属性,您可以使用该属性遍历成员。
您可以使用IGroupFetcher
检索组成员:
var group = await adClient.Groups.Where(g => g.ObjectId == groupObjectId).ExecuteSingleAsync();
IGroupFetcher groupfetcher = (Group)group;
var membersResult = await groupfetcher.Members.ExecuteAsync();
var more = true;
while (more)
{
foreach (var member in membersResult.CurrentPage)
{
//... remember to handle that members can be other groups
}
if (!membersResult.MorePagesAvailable)
{
more = false;
}
else
{
// get next page in results
membersResult = await membersResult.GetNextPageAsync();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.