Microsoft Graph:如何按域名

时间:2017-12-20 11:57:11

标签: azure microsoft-graph

租户可以拥有多个分配的域,并且所有用户都直接在租户中进行组织。要获得所有用户的列表,您只需询问:

https://graph.microsoft.com/v1.0/users

但我想通过用户主体名称中使用的域过滤列表。在阅读explanation at MSDNdeveloper documentation之后,似乎无法做到这样的事情。

您只能检查(不)相等或者字符串是否以某些文本开头,但是无法检查字符串是否以特定内容结束。

我希望会有类似的东西,但两者都不是:

https://graph.microsoft.com/v1.0/users?$filter=endsWith(userPrincipalName, 'mydomain.com')
https://graph.microsoft.com/v1.0/users?$filter=userPrincipalName eq '*@mydomain.com'
https://graph.microsoft.com/v1.0/users?$filter=userPrincipalName eq '.*@mydomain.com$'
https://graph.microsoft.com/v1.0/users?$filter=domain eq 'mydomain.com'

有没有人知道如何过滤特定域的用户列表?

2 个答案:

答案 0 :(得分:2)

Microsoft Graph目前不支持endsWithcontains

如果这是您希望定期搜索的内容,则可以添加定位user资源的Schema Extension以保留用户的电子邮件域。

虽然最初的人口是工作密集型的,但随着时间的推移,可以通过/delta端点由tracking changes to users管理。您可以定期提取/delta并仅更新受影响的user资源。

答案 1 :(得分:1)

endsWith 最近开始工作了。

图形浏览器示例:

https://graph.microsoft.com/v1.0//users?$count=true&$filter=endsWith(userPrincipalName,'@example.com')&$select=id,userPrincipalName

Graph.NET SDK:

var request = graphServiceClient.Users
                .Request()
                .Header("ConsistencyLevel", "eventual")
                .Filter("endswith(userPrincipalName,'@example.com')")
                .Select(x => new { x.Id, x.UserPrincipalName })
                .OrderBy("userPrincipalName");
request.QueryOptions.Add(new QueryOption("$count", "true"));

var result = await request.GetAsync();

另见 https://docs.microsoft.com/en-us/graph/api/user-list?view=graph-rest-1.0&tabs=csharp 处的示例 5(目前文档中的 C# 示例不完整)