0

我正在開發一個應用程序,我需要與後臺作業中的某些Dynamics CRM API保持通信(每隔幾分鐘上傳更新的內容)。具有客戶端聲明證書(Azure AD)的Dynamics CRM守護進程應用程序給出401

由於使用用戶證書(應用程序權限)進行ADAL身份驗證與CRM API完美配合使用,我的印象是,我也會得到它與客戶端斷言證書憑證一起工作。

代碼看起來是這樣的 -

var certCred = new ClientAssertionCertificate(clientId, cert); 
var result = await authContext.AcquireTokenAsync("https://<tenant_name>.crm4.dynamics.com/", certCred); 

這工作,我能夠獲得訪問令牌。但是,由於這些是委託權限,我無法執行獲得授權訪問CRM WebAPI的權限。

我明顯可以使用服務/守護進程帳戶來執行後臺任務,但我希望在客戶端斷言證書方式中做更多。有沒有人找到像這樣的場景的解決方案? CRM WebAPI是否支持委託權限?

有沒有其他方法可以做到這一點?

回答

1

我想先澄清一些概念。客戶端憑據流用於獲取應用程序權限,而不是爲應用程序委派權限。通常,OAuth 2.0代碼授權流程用於獲取委託權限。

從描述中,您似乎希望通過客戶端憑證流獲取應用程序權限,但該令牌無效以調用Dynamics CRM Web API。研究結束後,我發現這個問題曾多次提出,但沒有答案。

基於我的理解,Dynamics CRM Web API似乎不支持應用令牌(使用客戶端憑證流獲取),因爲當您在Azure上註冊此API的應用時,我們無法檢查任何權限/適用範圍如下圖所示: enter image description here

+0

正確,那麼創建守護程序服務的理想方式是什麼? –

+0

要在守護程序服務中使用Dynamics CRM Web API,我們可以使用密碼流進行身份驗證。更詳細的你可以參考[這裏](https://msdn.microsoft.com/en-us/library/hh675404.aspx) –

+0

對於Deamon服務也許我的問題的答案可以幫助你:http://stackoverflow.com /問題/ 37454539 /使用阿達爾-C鋒利的機密用戶守護 - 服務器 - 服務器到服務器-401-U – IntegerWolf

相關問題