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

如何获取Azure企业应用已分配用户的姓名、邮箱等属性信息

解决方案

你的需求完全可以实现,无需申请Users.Read.All这类全量用户读取权限,只需要通过Microsoft Graph的扩展查询参数即可完成,具体操作步骤如下:

操作步骤

  1. 权限配置
    首先在Azure门户的应用注册页为你的应用添加应用权限(注意不是委托权限)下的Application.Read.All权限,提交后请客户租户的全局管理员为该权限授予管理员同意即可。该权限仅允许读取应用相关的关联信息,无法访问租户内未分配给当前应用的用户数据,符合你的数据最小化访问要求。
  2. 调用优化后的Graph接口
    不需要分两次调用接口,直接在查询应用角色分配的接口中添加$expand参数,直接拉取关联用户的所需属性,请求地址如下:
https://graph.microsoft.com/v1.0/servicePrincipals/{服务主体对象ID}/appRoleAssignedTo?$expand=principal($select=givenName,surname,mail,id,displayName)

注意:路径中的服务主体对象ID是你应用对应企业应用的Object ID,不是应用注册页的Client ID,可在Azure门户「企业应用」板块找到对应应用后复制该值。

  1. 结果处理
    接口返回结果中每个分配记录会新增principal字段,其中:
  • givenName对应你需要的用户名
  • surname对应用户姓
  • mail对应用户邮箱
    如果返回的principalType为Group,则说明分配主体是用户组,你可以通过以下接口拉取该组内的所有传递用户属性,同样使用上面的权限即可正常调用:
https://graph.microsoft.com/v1.0/groups/{组ID}/transitiveMembers?$select=givenName,surname,mail,id,displayName

之前单独调用用户接口报错的原因

你之前单独调用/users/{principalId}接口权限不足,是因为你没有为应用分配对应的用户读取权限,但这类基础用户读取权限默认覆盖全租户用户,不符合你仅访问已分配用户的要求,因此更推荐使用上面的单接口扩展查询方案。

内容的提问来源于stack exchange,提问作者Bert Bijn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:24:04