我可以使用ActiveDirectoryClient从Azure Active Directory获取所有用户。
有没有办法从ASP.NET MVC中的azure AD中获取启用的用户,或者在检索所有用户后,将它们过滤为启用或禁用?
AccountEnabled
对象的User
布尔属性指示用户是否已启用登录。此属性支持在服务端进行过滤(由“($ filter)”表示,在User
entity reference的“Supports”列中)(因此不需要进行客户端过滤)。
在下面的示例中,我们迭代所有已启用的用户(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);
如果您使用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
应该。 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