Azure 通过 Rest API 或 python 模块(MS Graph)按名称或电子邮件地址搜索用户、组或服务原则?

Azure search for user, groups, or service principle by name or email address via Rest API or python module (MS Graph)?

在 azure 中,将用户、组或服务负责人添加到角色时,您可以在同一搜索中按名称和电子邮件地址进行搜索(下面的屏幕截图)。当我查看 MS Graph APIs 时,有针对用户、组和服务原则的单独 APIs(下面的 MS Graph API 文档链接)。而且搜索选项似乎不能混合(只能显示名称或电子邮件)。

有谁知道如何使用 Azure REST API 实现这样的搜索。我很好奇是否有人知道 Azure 实际在做什么,以及它们是否属于已发布的其余部分 API?或者,如果一个搜索像多个 API 调用一样组合在一起,这会令人困惑,因为它们是分页的,很难弄清楚从哪个显示什么....

我正在构建一个应用程序来添加权限,我正在尝试重新创建类似此搜索的功能。

我现在能想到的实现此目的的唯一方法是 select 一个搜索 'groups'、'users' 或 'service principles' 的选项。然后另一个选项 select 按 'email' 搜索或按 'displayName' 搜索(但不能同时搜索)。这看起来更笨重但技术上还可以....但我更愿意像下面的天蓝色屏幕截图那样做。

https://docs.microsoft.com/en-us/graph/api/user-list?view=graph-rest-1.0&tabs=http

https://docs.microsoft.com/en-us/graph/api/group-list?view=graph-rest-1.0&tabs=http

https://docs.microsoft.com/en-us/graph/api/serviceprincipal-list?view=graph-rest-1.0&tabs=http

Microsoft Graph API 提供批处理功能,您可以在其中将多个请求一起批处理并将它们作为单个请求发送以进行处理。在您的情况下,在服务器端(图 API 端)将处理三个请求,但从您的应用程序,您将发送一个请求并获得一个响应。

您的请求类似于:

{
  "requests": [
    {
      "id": "1",
      "method": "GET",
      "url": "/users?$filter=<your-filter-criteria>"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/groups?$filter=<your-filter-criteria>"
    },
    {
      "id": "3",
      "method": "GET",
      "url": "/servicePrincipals?$filter=<your-filter-criteria>"
    }
  ]
}

您可以在此处了解有关 Microsoft Graph API 批处理功能的更多信息:https://docs.microsoft.com/en-us/graph/json-batching

所以批处理答案并不是我想要的,但它确实很酷,我将来可能会使用它!

因为分页结果的批处理可能会变得丑陋,因为我想要 30 个总结果(所以我将分页设置为 10、10、10)然后如果一个给出 10 并且有下一个链接,下一个给出 0,最后一个给出5. 我现在有 15 个结果要显示,但是与另一个一起分页以及在下一个之后对结果进行排序可能会更早地抛出结果。这可能很奇怪,我没有时间考虑。

我刚刚完成了用户、组和服务主体的下拉列表。而且您必须单独搜索。不像 MS 在内部做的那样酷,但它一致、可预测且有效。