You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过MS Graph或Azure REST API同时搜索用户、组、服务主体的名称和邮箱?

实现方案说明

Azure 门户的混合搜索效果是通过合并多组 MS Graph API 调用结果实现的,所用能力均为公开接口,你可以通过两种方案复现该效果:

方案1:调用 Microsoft Graph 统一搜索接口(推荐)

直接使用公开的 MS Graph 搜索端点,可一次请求同时匹配多类对象、多个字段:

  • 请求头需指定 ConsistencyLevel: eventual
  • 请求体中可指定搜索实体为 user、group、servicePrincipal,同时指定匹配字段为 displayName、mail、servicePrincipalNames 等
  • 接口会直接返回混合排序后的结果,排序逻辑和 Azure 门户默认规则一致,也可自定义排序权重

请求示例(仅展示结构):

POST https://graph.microsoft.com/v1.0/search/query
Content-Type: application/json
ConsistencyLevel: eventual

{
  "requests": [
    {
      "entityTypes": ["user", "group", "servicePrincipal"],
      "query": {
        "queryString": "你的搜索关键词"
      },
      "fields": ["displayName", "mail", "servicePrincipalNames", "id"],
      "size": 20
    }
  ]
}

方案2:批量调用独立接口自行合并结果

如果需要更灵活的结果处理规则,可以调用 MS Graph 批量接口一次性触发三类对象的独立搜索,再自行合并:

  • 每个子请求使用 $search 参数同时匹配多字段,例如用户搜索参数为 "$search": "\"displayName:关键词 OR mail:关键词\""
  • 结果合并时可自定义展示优先级:通常建议优先展示完全匹配的结果,同匹配度下按用户>组>服务主体的顺序排序,和 Azure 门户体验保持一致
  • 分页处理:首次请求每类对象各拉取20条,合并后取前20条作为第一页;后续分页时根据上一页最后一条结果的匹配等级,对应拉取对应类型接口的下一页数据即可

权限要求

两种方案都需要为你的应用申请对应权限:User.Read.All、Group.Read.All、Application.Read.All,可根据实际使用场景选择委托权限或应用权限。


内容的提问来源于stack exchange,提问作者Kyle N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:06:01