2017-03-29 33 views
0

我有一個本地客戶端,它調用了我寫的服務 - 反過來調用Graph API(使用原始調用者的憑據)。如何在多租戶環境中配置代表身份驗證?

這是完全一樣的「onbehalfof」這裏發現樣品(我的代碼失敗的方式同樣品):

https://github.com/Azure-Samples/active-directory-dotnet-webapi-onbehalfof

當從相同的租用戶作爲服務登錄(租戶A),一切工作正常(就像樣本的onbehalf)。當作爲從不同承租人(承租人B)一個用戶登錄,我在這條線在服務得到一個異常:

result = await authContext.AcquireTokenAsync(GraphResourceId, clientCred, userAssertion); 

(這是onbehalfof樣品中從TodoListController.cs線153)。

例外情況是這樣的:

AADSTS65001:用戶或管理員沒有同意使用 應用ID爲 'de2fb28b-83f8-419d-9b00-3fbce0a60bf4'。發送 對此用戶和資源的交互式授權請求。\ r \ nTrace ID:6865c420-674a-4adf-a070-3d9b9c500200 \ r \ n相關ID: 7e088563-d7fe-4131-a05c-cbe04dbb2bbd \ r \ n時間戳:2017 -03-29 22:56:58Z

以上的應用程序ID是指我寫的服務(這是在onbehalfofsample的TodoListService同一行中)。

我爲多租戶認證配置了一切。但是,我的服務正在向其他服務(圖形API)發起的額外的調用導致此問題。我需要在Azure門戶中進行哪些其他配置才能使其工作?

回答

0

現在正在工作。我不得不做兩個改變才能使它工作。

首先,在服務端切換到使用「common」作爲租戶。我切換到普通客戶端上,但不知道你不得不這樣做是對服務的一面:

<add key="ida:Tenant" value="common" /> 

其次,改變服務的GraphUserUrl到以下網址:

<add key="ida:GraphUserUrl" value="https://graph.windows.net/me?api-version=1.6" /> 

樣本中的原始URL不起作用(至少對於另一個租戶中的用戶)。

+0

這些「評論」應修改爲原始帖子。 –

0

在你上面鏈接樣品的書面說明,他們解決這個問題有以下部分:

配置稱爲客戶端應用程序

對於中間層的Web API,以便能夠調用下游web API, 用戶必須授予中間層權限,以 的形式同意。由於中間層沒有自己的交互式UI,因此您需要將Azure AD中的客戶端應用程序註冊與 的Web API註冊進行明確綁定,該註冊將 中間層客戶端&所需的許可合併爲一個對話。您可以通過將 將客戶端應用程序的「客戶端ID」添加到knownClientApplications屬性中的Web API的清單來完成。方法如下:

  1. 導航到您的'TodoListService'應用程序註冊,並打開清單編輯器。
  2. 在清單中,找到knownClientApplications數組屬性,並將客戶端應用程序的客戶端ID添加爲一個元素。

    您的代碼看起來應該像下面大功告成後: "knownClientApplications": ["94da0930-763f-45c7-8d26-04d5938baab2"]

  3. 保存TodoListService通過點擊「保存」按鈕清單。

我的假設是,因爲你遇到了這個問題,你還沒有做過這種特殊的配置。

您擁有的其他選項是明確請求中間層和AAD Graph API之間的同意。您可以通過讓租戶管理員「登錄」並同意您的中間層服務來做到這一點。您只需使用中間層應用程序ID生成登錄網址即可。

但是,我強烈建議您按照記錄的方式進行操作,因爲這會爲您的用戶提供更好的體驗。

+0

不是這樣。我確實設置了已知的客戶端應用程序。如果我沒有,當從另一個租戶作爲用戶登錄時,進入該服務的呼叫將失敗(並且我從不會在示例中的第153行)。示例按廣告形式工作 - 當您從服務的相同租戶作爲用戶登錄時。但是,如果您作爲不同租戶的用戶登錄,則會因上述錯誤而失敗。有任何想法嗎? –

+0

「,它將客戶端和中間層所需的許可合併成一個對話框」......您在同意對話中看到了什麼? –

+0

查看答案,其中包含了同意對話框的屏幕截圖。 –

0

這裏,當從另一個租戶中的用戶登錄出現的對話框同意:

Consent Dialog

+0

請提供您的清單截圖。 –

+0

我爲我的客戶端和服務清單添加了屏幕截圖的答案。 –

相關問題