仅从Azure Active Directory检索已启用的帐户

时间:2016-09-05 12:29:47

标签: c# asp.net-mvc azure azure-active-directory azure-ad-graph-api

我可以使用ActiveDirectoryClient从Azure Active Directory获取所有用户。

是否有办法在ASP.NET MVC中从azure AD中获取启用的用户,或者在检索所有用户后,将其过滤为启用或禁用?

2 个答案:

答案 0 :(得分:3)

AccountEnabled对象的User布尔属性指示用户是否已启用登录。此属性支持在服务端进行过滤(由"($ filter)"表示,在User entity reference的"支持"列中),所以'不需要进行客户端过滤。

在以下示例中,我们迭代所有已启用的用户(graphClientActiveDirectoryClient的实例):

// Iterates over all enabled users.
var users = await graphClient.Users.Where(u => u.AccountEnabled == true).ExecuteAsync();
do
{
    foreach (var user in users.CurrentPage)
    {
        Console.WriteLine("Enabled user: {0}", user.UserPrincipalName);
    }
    users = await users.GetNextPageAsync();
} while (users != null);

如果您使用Fiddler(或任何其他流量分析器),您将看到这转换为对Azure AD Graph API的以下GET请求:

https://graph.windows.net/{tenant-id}/users()
    ?$filter=accountEnabled%20eq%20true
    &api-version=1.6

正在进行过滤的部分(减去URL编码)是:

$filter=accountEnabled eq true

答案 1 :(得分:2)

应该是。 Here is the list of all properties of the User object,以及指示哪些支持过滤($ filter)

And here is documentation on how to use filtering, paging, querying

最后,GetUsers操作的interactive Azure AD Graph API Rest Documentation,您可以使用它来试验您的查询。

最后,您的$filter查询参数的值应为accountEnabled eq true(至少 - 这足以只启用已启用的帐户,如果您想要过滤更多帐户,还可以使用其他条件。)

整个GET请求应该像:

  

https://graph.windows.net/contoso.com/users?api-version=2013-11-08& $滤波器= accountEnabled%20当量%20true