2017-09-06 56 views
0

我們正在創建第三方應用程序來訪問合作伙伴中心API。如何從授權的Web API向合作伙伴中心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; 

我們應該用相同的ID令牌這裏AJAX請求獲得網頁API。或者我們應該刷新訪問令牌。如果是的話,如何在Web API上做到這一點?

另外,我們如何在WebAPI上生成tokenCache?

回答

0

根據描述,似乎您正在訪問由Azure AD保護的Web API。並且您想要訪問Web API中的合作伙伴中心API。

然後您使用MSAL(Azure AD V2.0端點)將Web API與第三方應用程序集成。但是,AFAIK Azure AD V2.0不支持類似Partner Perter API(請參閱Restrictions on services and APIs)。

如果合作伙伴中心API可以通過使用client credentials flow獲取令牌進行訪問,那麼您可以使用此流獲取Web API中的令牌並調用合作伙伴中心API。

另一種方法是使用代表流。以下是此流程的進度, 第三方應用程序獲取access_token以調用Web API。然後,Web API使用on-behalf-flow獲取Partner Center API的令牌,並使用新令牌調用Partner Center API。此解決方案使用Azure AD端點而不是v2.0(在Azure門戶上註冊應用程序)。由於此庫用於Azure AD V2.0端點,因此無法使用MSAL登錄。我們可以使用azure-activedirectory-library-for-js與Azure AD端點一起登錄。

相關問題