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

Rav*_*and 3 c# asp.net-mvc azure azure-active-directory azure-ad-graph-api

我能够使用 ActiveDirectoryClient 从 Azure Active Directory 获取所有用户。

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

Phi*_*ret 5

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

在以下示例中,我们遍历所有启用的用户(graphClient是 的实例ActiveDirectoryClient):

// 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);
Run Code Online (Sandbox Code Playgroud)

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

// 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);
Run Code Online (Sandbox Code Playgroud)

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

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