如何让Azure AD注册的守护应用跨租户调用Graph API读取用户列表?
跨Azure租户读取用户列表的解决方案
核心前提:将应用配置为多租户
首先必须把你在原租户注册的应用改为多租户应用,否则其他租户无法识别并引用它:
- 登录原租户的Azure门户,进入你的应用注册,找到"支持的账户类型",修改为「任何组织目录中的账户」,保存设置。
其他租户的配置步骤
其他租户的管理员只需完成以下两步,就能让你的应用访问他们的AD用户:
- 添加你的应用为企业应用
进入目标租户的Azure门户,打开「企业应用」→「新建应用」→「从库中添加」,直接搜索你的应用客户端ID,找到后添加到租户中。这一步会在目标租户创建该应用的服务主体实例。 - 授予应用权限
在刚添加的企业应用中,进入「权限」→「添加权限」,选择Microsoft Graph,添加应用权限(比如User.Read.All),然后点击「授予管理员同意」。
守护程序的调用调整
你的守护程序无需修改密钥,只需在获取访问令牌时,将请求的租户ID替换为目标租户的ID:
- Token请求端点:
https://login.microsoftonline.com/{目标租户ID}/oauth2/v2.0/token - 请求参数:用原应用的客户端ID、密钥,
scope设为https://graph.microsoft.com/.default - 获取到token后,即可调用Graph API读取目标租户的用户列表。
关于之前方案的澄清
- B2B跨租户功能主要用于用户跨租户访问资源,并非应用级别的跨租户授权,不符合你的需求。
- 你提到的「发布企业应用」本质就是其他租户添加你的多租户应用为企业应用,这正是正确的实现路径,之前的模糊点在于没先将应用设为多租户。
内容的提问来源于stack exchange,提问作者Brian M. Hunt
相关产品推荐
相关产品推荐

