通过 API 访问合作伙伴中心客户

问题描述 投票:0回答:1

首先,我的问题相当于MS论坛上的这篇文章,但没有人解决。

我正在尝试访问任何允许我查看所有客户的用户计数、图表或合作伙伴中心 API 的 API。

我的两个基本要求:

  • 从合作伙伴中心阅读完整的客户列表
  • 能够使用单个应用程序凭据为任何合作伙伴中心客户生成图形 API 访问令牌,以访问其用户列表。

我已阅读合作伙伴中心 API 的文档,并且正在遵循 REST 身份验证示例,但无论我如何尝试进行身份验证,合作伙伴中心 API 都会返回 403 错误。

我正在使用 OAuth 2.0 通过

https://login.microsoftonline.com/{tenantId}/oauth2/token
路由以及
grant_type: client_credentials
resource: https://graph.windows.net
进行身份验证,如上面链接的文档中所述。

这成功返回了一个令牌,但是当我将其用作

https://api.partnercenter.microsoft.com/v1/customers
路线的承载时,我收到 403 Forbidden 错误。

我还发现了其他文档中未引用的其他令牌路由。当我尝试使用此访问令牌作为承载者和 https://api.partnercenter.microsoft.com/generatetoken

grant_type: jwt_token
发送 POST 时,我会返回
{"error": "invalid_grant", "error_description": "Invalid authorization bearer is passed"}
    

azure microsoft-partner-center
1个回答
0
投票

“客户端应用程序 TenantID 在租户 CustomerTenantID 中缺少服务主体”要使用同一应用程序访问所有租户,请检查以下内容:

假设您的租户为

TenantA,客户租户为

CustomerTenant

TenantA

中创建多租户应用程序,方法是选择

“任何组织目录中的帐户(任何 Microsoft Entra ID 租户 - 多租户)” 并授予 User.Read.All Microsoft Graph API 权限:

现在 enter image description here要解决错误

,请使用以下端点并使用

CustomerTenant 全局管理员帐户登录,以便在

CustomerTenant*:
 中创建服务主体
https://login.microsoftonline.com/CustomerTenantTenantID/adminconsent?client_id=ClientIDOFAPPinTenantA OR https://login.microsoftonline.com/organizations/adminconsent?client_id=ClientIDOFAPPinTenantA


一旦点击enter image description here接受

,然后转到

CustomerTenant -> 企业应用程序 -> 搜索应用程序:


CustomerTenant

中创建服务主体并授予 API 权限:

现在生成 Microsoft Graph API 的访问令牌以访问 enter image description here

CustomerTenant

 的用户
GET https://graph.microsoft.com/v1.0/users Grant type: Authorization code Callback URL: https://oauth.pstmn.io/v1/callback Auth URL: https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize Token URL : https://login.microsoftonline.com/organizations/oauth2/v2.0/token Client ID : ClientID Client Secret : ClientSecret Scope: https://graph.microsoft.com/.default

我使用
CustomerTenant

帐户登录,并成功获取

CustomerTenant 的用户详细信息:

现在进行测试,我使用 enter image description here

TenantA

帐户登录并获取

TenantA 的用户 :

enter image description here您还可以使用

    CustomerTenant
  • 全局管理员帐户直接生成访问令牌,您将看到接受权限的同意屏幕,而不是通过端点创建服务主体。
    您可以利用刷新令牌模型来访问微软合作伙伴中心的客户。请参考我的这个
  • SO Thread
  • 参考资料:

azure - 跨不同 Microsoft 租户搜索用户信息 - Stack Overflow

,作者:Tiny Wang

azure - 是否可以从租户 A 为租户 B 创建用户 (Microsoft Entra ID)? - Stack Overflow

由我

© www.soinside.com 2019 - 2024. All rights reserved.