解决访问Partner Center API获取客户与用户时的403 Forbidden错误
Partner Center API调用返回403 Forbidden故障排查
目标需求
通过PowerShell调用Partner Center API,获取本公司管理的客户及客户租户内的用户信息并导出为CSV文件(与Partner Center客户工作区展示内容一致),涉及以下API端点:
GET https://api.partnercenter.microsoft.com/v{version}/customers:列出Partner Center客户- 注:原需求中"列出客户租户用户"对应的正确端点应为
GET https://api.partnercenter.microsoft.com/v1/customers/<customer-tenant-id>/users,需确认是否存在端点使用错误
已完成配置
- Partner Center类型为
CSP, indirect provider - cloud reseller - 个人账号已分配Global admin、admin agents、sales agent等全部可用角色
- 创建单租户类型应用注册
Accounts in this organizational directory only (myorgname - Single tenant),Redirect URI设为Web类型 - 应用注册已分配三个委托权限(配图:
) - 在Partner Center关联该应用并分配Owner plus manager role
- 已成功完成API认证,可获取refresh token、连接Partner Center,还能生成有效期90天的access token作为Bearer凭证
- 可通过Partner Center GUI客户工作区正常查看客户
当前问题
调用目标API端点时,无论使用REST API流程还是PowerShell SDK均返回403 forbidden错误。
调用示例
REST API调用示例
$mynewtoken = "new token requested using refresh token" $url = "https://api.partnercenter.microsoft.com/v1/customers" $headers = @{ "Authorization" = "Bearer $mynewtoken" "Accept" = "application/json" } $response = Invoke-RestMethod -Method Get -Uri $url -Headers $headers $response
PowerShell SDK调用示例
$customers = Get-PartnerCustomer $customers | ForEach-Object { Write-Output "Customer ID: $($_.CustomerId), Company Name: $($_.CompanyProfile.CompanyName)" }
(错误截图:
)
排查方向
- 权限范围验证:确认获取access token时请求的scope是否包含
https://api.partnercenter.microsoft.com/.default,委托权限需在授权流程中指定正确范围,否则token会缺少必要权限。 - 应用角色匹配:在Partner Center关联应用时,需确保分配的角色是针对客户管理的权限(如Admin Agent),而非仅市场提交API的角色,部分角色仅针对特定API场景生效。
- Token权限声明检查:使用JWT解析工具查看access token的
scp(委托权限)或roles(应用权限)声明,确认是否包含Customer.Read.All等读取客户列表的必要权限,若缺少则说明权限配置未同步到token中。 - 间接提供商上下文验证:作为间接提供商,需确认API调用时使用的是合作伙伴租户的token,而非客户租户的token;部分场景需在请求头中添加
MS-PartnerCenter-Operation-Id或确保租户ID正确。 - 应用关联完整性:检查Partner Center中应用关联的状态,确认应用已被成功授权,间接提供商的应用关联可能需要等待几分钟到几小时的同步时间。
- 端点正确性验证:若要获取客户租户内的用户,需调用
GET https://api.partnercenter.microsoft.com/v1/customers/{customer-id}/users,而非客户详情端点,端点错误也可能导致权限验证失败。
内容的提问来源于stack exchange,提问作者Bernietechy
相关产品推荐
相关产品推荐

