过滤器groupType适用于组,但不适用于memberOf

时间:2018-07-06 07:29:43

标签: azure-active-directory microsoft-graph

我可以很容易地从azure活动目录中获取所有统一组,尤其是因为在the documentation中明确提到了该组:

GET https://graph.microsoft.com/v1.0/groups?filter=groupTypes/any(c:c+eq+'Unified')

您可以使用this query获取用户所属的所有组:

GET https://graph.microsoft.com/v1.0/users/{user-id}/memberOf

现在,让我们结合这两个查询来获取用户所属的所有统一组:

GET https://graph.microsoft.com/v1.0/users/{user-id}/memberOf?filter=groupTypes/any(c:c+eq+'Unified')

您会回来的:

HTTP Status Code 400
{
    "error": {
        "code": "BadRequest",
        "message": "Filter not supported.",
        "innerError": {
            "request-id": "{request-id}",
            "date": "2018-07-06T07:29:52"
        }
    }
}

好的,因此组支持lambda查询,因此让我们对其进行扩展并增强过滤器以对成员进行过滤:

GET https://graph.microsoft.com/v1.0/groups?$filter=groupTypes/any(c:c+eq+'Unified') and members/any(u:u/id+eq+'{user-id}')

但这会返回

HTTP Status Code 400
{
    "error": {
        "code": "Request_UnsupportedQuery",
        "message": "Unsupported Query.",
        "innerError": {
            "request-id": "{request-id}",
            "date": "2018-07-06T07:41:47"
        }
    }
}

那么,为什么不支持任何一种功能(在Beta中也不支持)?

2 个答案:

答案 0 :(得分:1)

请尝试使用以下查询获取用户所属的所有统一组-

private void compactFiles() throws Exception {
  Set<String> events = this.listSubDirectoryNames(inputDir);
  ForkJoinPool customThreadPool = new ForkJoinPool(4); // you might need to adjust this value to find optimal performance
  customThreadPool.submit(() -> events.parallelStream().forEach(event -> writeEvent(event, eventSchemaMap.get(event), this.configuration))).get(); //Due to how ForkJoin pool works tasks will be submitted to the same pool which was used to execute parent task
}

答案 1 :(得分:1)

  

那么,为什么不支持任何一种功能(在Beta中也不支持)?

List memberOf Rest API不支持

$ filter。我们可以从List memberOf Rest API文档中获取该信息。

  

此方法支持OData查询参数以帮助自定义响应。 $ filter 不受支持

List Group Rest API,我们可以知道没有任何与用户相关的属性。 因此,您尝试不支持对成员进行过滤。

正如SaurabhSharma-MSFT提到的那样,您可以使用以下方式来做到这一点。

GET https://graph.microsoft.com/v1.0/Users/{user-id}/memberOf/$/microsoft.graph.group?$filter=groupTypes/any(c:c+eq+'Unified')