全局云Azure AD应用能否跨国家云访问其他租户Microsoft API?
全局云Azure AD应用访问国家云租户数据的可行性分析
这是个很关键的问题,毕竟Azure的国家云环境和全局云是完全独立的生态,我来给你理清情况:
首先给出核心结论:全局云创建的多租户Azure AD应用,默认无法直接授权访问美国政府云、德国云、中国云这类国家云中的租户数据。背后的原因和可行方案如下:
为什么默认无法访问?
国家云本质是独立的Azure环境,和全局云完全隔离,主要体现在:
- 每个国家云都有自己独立的Azure AD实例,全局云的应用注册不会同步到任何国家云的Azure AD中
- 各个环境的API端点完全不同,比如:
- 全局云Graph API:
https://graph.microsoft.com - 美国政府云Graph API:
https://graph.microsoft.us - 中国云Graph API:
https://microsoftgraph.chinacloudapi.cn
- 全局云Graph API:
- 国家云的OAuth2授权/令牌端点也和全局云不同,比如中国云的授权端点是
https://login.chinacloudapi.cn/{tenant-id}/oauth2/v2.0/authorize
你之前实现的全局云内多租户访问,是因为所有租户都属于同一个全局Azure AD生态,而国家云相当于完全独立的身份系统,所以这套逻辑不适用。
可行的解决方案
如果需要访问国家云的租户数据,目前有两种靠谱的方式:
1. 在目标国家云中重新注册应用
这是最推荐、最稳妥的方案:
- 登录对应国家云的Azure门户(比如中国云是
https://portal.azure.cn,美国政府云是https://portal.azure.us) - 在该环境中创建新的应用注册,配置为多租户(注意这个多租户是指在该国家云范围内的租户)
- 按照该国家云的OAuth2流程配置授权、获取令牌,然后调用对应国家云的API
这种方式下,应用直接属于目标国家云的环境,能正常和该环境的Azure AD、API服务交互,没有跨云的兼容性问题。
2. 应用权限模式下的跨云配置(仅部分场景)
如果你的场景是使用客户端凭据流(应用权限,无需用户交互),可以尝试以下步骤,但需要目标国家云租户的管理员配合:
- 在目标国家云的租户中,为全局云的应用创建服务主体(需要通过PowerShell或API手动创建,因为不会自动同步)
- 给这个服务主体授予对应的API权限(比如Graph API的应用权限)
- 调用目标国家云的令牌端点获取令牌,再访问对应API
不过这种方式配置复杂,且不是所有Azure服务API都支持跨云的应用权限访问,只适合特定的后端服务场景。
注意:用户授权模式(授权码/隐式流)无法跨云
如果你的场景需要用户手动授权(比如前端应用、需要用户上下文的场景),那全局云的应用完全无法让国家云的用户完成授权——因为用户的身份属于国家云的Azure AD,而全局云的应用不在该环境的信任列表中,用户会直接看到授权错误页面。
内容的提问来源于stack exchange,提问作者Anton Sashidharan
相关产品推荐
相关产品推荐

