首先,我的问题相当于MS论坛上的这篇文章,但没有人解决。
我正在尝试访问任何允许我查看所有客户的用户计数、图表或合作伙伴中心 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"}
。“客户端应用程序 TenantID 在租户 CustomerTenantID 中缺少服务主体”。 要使用同一应用程序访问所有租户,请检查以下内容:
假设您的租户为
TenantA
,客户租户为
CustomerTenant
在 TenantA
中创建多租户应用程序,方法是选择
“任何组织目录中的帐户(任何 Microsoft Entra ID 租户 - 多租户)” 并授予User.Read.All
Microsoft Graph API 权限:
现在 要解决错误
CustomerTenant
全局管理员帐户登录,以便在
CustomerTenant
*:中创建服务主体
https://login.microsoftonline.com/CustomerTenantTenantID/adminconsent?client_id=ClientIDOFAPPinTenantA
OR
https://login.microsoftonline.com/organizations/adminconsent?client_id=ClientIDOFAPPinTenantA
一旦点击接受
CustomerTenant
-> 企业应用程序 -> 搜索应用程序:
CustomerTenant
中创建服务主体并授予 API 权限:
现在生成 Microsoft Graph API 的访问令牌以访问
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
的用户详细信息:
现在进行测试,我使用
TenantA
帐户登录并获取
TenantA
的用户 :
您还可以使用
CustomerTenant
azure - 跨不同 Microsoft 租户搜索用户信息 - Stack Overflow
,作者:Tiny Wangazure - 是否可以从租户 A 为租户 B 创建用户 (Microsoft Entra ID)? - Stack Overflow
由我