【问题标题】:How to make API call to Partner Center from authorized Web API?如何从授权的 Web API 向合作伙伴中心进行 API 调用?
【发布时间】:2017-09-07 11:01:46
【问题描述】:

我们正在创建一个第三方应用程序来访问合作伙伴中心 API。

我们已经注册了一个使用 JSOM 架构的 SharePoint 网站作为第三方应用程序,我们使用 MSAL 库进行登录。之后使用 accessToken 我们调用一个 WebAPI 用于安全地访问我们数据库中的数据。现在我们需要访问合作伙伴中心 API 以获取合作伙伴详细信息。根据提供给我们的文档,我们有以下代码:

var clientcred = new ClientCredential(clientId, appKey);
var authContext = new AuthenticationContext(string.Format("https://login.microsoftonline.com/{0}/", tenantID), tokenCache);
var result = await authContext.AcquireTokenAsync("https://api.partnercenter.microsoft.com", clientcred, new UserAssertion(idToken));
var pcAccessToken = result.AccessToken;

我们是否应该在从 ajax 调用获得的 web api 上使用相同的 id 令牌。或者我们是否必须刷新访问令牌。如果是,如何在 Web API 上实现?

另外,我们如何在 WebAPI 中生成 tokenCache?

【问题讨论】:

    标签: asp.net-web-api azure-active-directory msal


    【解决方案1】:

    根据描述,您似乎正在访问受 Azure AD 保护的 Web API。并且您想在 Web API 中访问合作伙伴中心 API。

    您使用 MSAL(Azure AD V2.0 端点)将 Web API 与第三方应用程序集成。但是,AFAIK Azure AD V2.0 不支持类似的合作伙伴 Perter API(请参阅 Restrictions on services and APIs)。

    如果合作伙伴中心 API 能够通过使用client credentials flow 获取令牌的方式访问,那么您可以使用此流程在 Web API 中获取令牌并调用合作伙伴中心 API。

    另一种方式是使用代理流程。这是此流程的进度, 第三方应用程序获取 access_token 以调用 Web API。然后,Web API 使用 on-behalf-flow 获取合作伙伴中心 API 的令牌,并使用新令牌调用合作伙伴中心 API。此解决方案使用 Azure AD 端点而不是 v2.0(在 Azure 门户上注册应用程序)。由于此库适用于 Azure AD V2.0 端点,因此无法使用 MSAL 登录。我们可以使用azure-activedirectory-library-for-js 使用 Azure AD 端点登录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-14
      • 2022-07-29
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 2019-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多