如何在Microsoft Partner Center用单个Azure AD应用自动化客户操作
解决方案:单个Azure AD应用批量访问所有合作伙伴客户资源
核心思路
采用合作伙伴中心关联的Azure AD应用 + 应用级权限 + 租户级管理员同意,结合客户端凭据流(Client Credentials Flow)实现无交互、一次性授权后批量访问所有客户租户资源,完全适配50+客户的自动化管理需求。
一、创建并配置Azure AD应用
- 在你的合作伙伴中心关联的Azure AD租户中创建应用注册:
- 账户类型选择「仅限此组织目录中的账户」
- 无需配置重定向URI(客户端凭据流不依赖交互式登录)
- 配置应用权限:
- 添加Microsoft Graph的应用权限(注意不是委派权限),根据业务需求选择:
Directory.Read.All(读取客户租户目录结构)User.Read.All(读取客户用户详情)- 其他业务所需权限(如
Group.Read.All等)
- 点击「授予管理员同意」,确保权限在合作伙伴租户范围内生效
- 添加Microsoft Graph的应用权限(注意不是委派权限),根据业务需求选择:
二、启用合作伙伴中心的跨客户访问权限
- 登录合作伙伴中心,进入「设置 > 应用和权限 > 应用」
- 找到刚创建的Azure AD应用,开启「对所有客户租户的访问权限」
- 配置访问范围:勾选你需要操作的资源类型(如用户、目录),与之前配置的Graph权限保持一致
三、实现自动化流程(示例)
1. 获取无交互访问令牌
使用MSAL库通过客户端凭据流获取令牌,无需浏览器登录:
var clientApp = ConfidentialClientApplicationBuilder .Create("<你的应用ID>") .WithClientSecret("<你的客户端密钥>") .WithTenantId("<合作伙伴租户ID>") .Build(); var scopes = new[] { "https://graph.microsoft.com/.default" }; var authResult = await clientApp.AcquireTokenForClient(scopes).ExecuteAsync();
2. 获取所有客户租户列表
调用合作伙伴中心API获取你管理的所有客户租户ID:
GET https://api.partnercenter.microsoft.com/v1.0/customers Authorization: Bearer {access_token}
3. 批量访问客户租户资源
针对每个客户的tenantId,使用同一令牌调用Microsoft Graph API:
GET https://graph.microsoft.com/v1.0/tenants/<客户tenantId>/users Authorization: Bearer {access_token}
四、关键注意事项
- 确保你的合作伙伴账户拥有全局管理员角色,才能为应用授予跨客户访问权限
- 客户端凭据流适用于后台服务/自动化脚本,全程无用户交互
- 遵循权限最小化原则:只授予业务必需的应用权限,降低安全风险
- 密钥管理:使用Azure Key Vault存储客户端密钥,禁止硬编码在代码中
内容的提问来源于stack exchange,提问作者Jamal Hussain
相关产品推荐
相关产品推荐

