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

C# 仅从Azure Active Directory检索启用的帐户,c#,asp.net-mvc,azure,azure-active-directory,azure-ad-graph-api,C#,Asp.net Mvc,Azure,Azure Active Directory,Azure Ad Graph Api,我能够使用ActiveDirectoryClient从Azure Active Directory获取所有用户 是否有办法从ASP.NET MVC中的azure AD中仅获取已启用的用户,或者在检索所有用户后,将其筛选为已启用或已禁用?应该是。 ,并指示其中哪些支持筛选($filter) 最后,是GetUsers操作的示例,您可以使用它来试验查询 最后,您的$filter查询参数的值应为accountEnabled eq true(至少-这足以只获取已启用的帐户,如果您想过滤更多,可以使用其他

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

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

应该是。 ,并指示其中哪些支持筛选($filter)

最后,是GetUsers操作的示例,您可以使用它来试验查询

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

整个GET请求应该类似于:

$filter=accountEnabled%20eq%20true


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

在下面的示例中,我们迭代所有启用的用户(
graphClient
ActiveDirectoryClient
的一个实例):

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

https://graph.windows.net/{租户id}/users()
?$filter=accountEnabled%20eq%20true
&api版本=1.6
进行过滤(减去URL编码)的部分是:

$filter=accountEnabled eq true

Great help@Philippe Signoret,我可以进行上述查询,但我没有阻止azure active directory中的用户帐户。这里还有一个查询,在我的project windows server active directory中,用户已同步到azure active directory。因此,如果在同步到azure ad后禁用windows server active directory中的用户。禁用的用户在azure ad中是否反映为阻止用户?是的,一旦同步更改,它将反映在azure ad中相应的
用户
对象的
AccountEnabled
属性中。非常有帮助@astaykov:),我也向菲利普问了同样的问题。请帮助我完成以下操作:在我的项目中,windows server active directory用户已同步到azure active directory。所以,若一个将禁用windows server active directory中的用户,而不是同步到azure ad之后。禁用的用户是否反映为azure ad中的被阻止用户?
// 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);