繁体   English   中英

MVC5如何遍历Azure活动目录用户组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM