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

Retrieving only enabled accounts from Azure Active Directory

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

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

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

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

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

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

整个 GET 请求应该像这样:

https://graph.windows.net/contoso.com/users?api-version=2013-11-08&$filter=accountEnabled%20eq%20true

User 对象的 AccountEnabled 布尔值 属性 指示用户是否可以登录。该属性支持服务端的过滤(在User entity reference的"Supports"列中用“($filter)”表示),(所以不需要做客户端过滤)。

在以下示例中,我们遍历所有已启用的用户(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 的 GET 请求 API:

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

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

$filter=accountEnabled eq true