繁体   English   中英

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

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

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

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

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

我现在能想到的实现这一目标的唯一方法是向 select 提供一个选项来搜索“组”、“用户”或“服务原则”。 然后另一个选项 select 通过“电子邮件”搜索或通过“显示名称”搜索(但不能同时搜索)。 这看起来更笨重,但技术上还可以……但我宁愿像下面的 azure 屏幕截图那样做。

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

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

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

Azure 门户屏幕截图

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://learn.microsoft.com/en-us/graph/json-batching

所以批处理的答案并不是我想要的,而是我将来可能会使用的非常酷的东西!

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM