2016-11-17 78 views
0

正如您所知,我正在創建一個使用B2B功能的多租戶天青應用程序。使用Microsoft Graph的B2B

我正在測試B2B功能,經過一些研究後,我得到了一個工作示例。

小概要:用戶對普通權限進行身份驗證,第一個令牌是通過授權代碼的通用權限獲取的,從那時起,每次我需要一個服務客戶端時,我嘗試從「當前租戶」權限獲取這些令牌。

當我要求'我'時,它只能對付住戶。當我向可信租戶索要我的信息時,出現錯誤消息,表示我的用戶標識符不存在於目錄中。可能因爲用戶實際上並不存在於可信租戶中。

當我要求用戶時,它工作正常。我可以同時獲得住房租戶用戶和可信租戶用戶。

這是正常的行爲嗎? 這是我需要以編程方式處理的東西,還是通過使用AD圖解決了這個問題? (所以當我知道我需要用戶信息時,只需查詢主租戶?) 或者這是一個錯誤?

任何想法都將不勝感激!

+0

B2B的一個重要內容是邀請函。你是否邀請用戶從一個AAD進入另一個? –

+0

是的,來自租戶a的用戶a已被邀請到租戶b。在向租戶b請求令牌時更改權限時,雖然我可以向租戶b請求用戶,但我無法請求我。這是通過向我詢問住宅租戶來解決的。所以現在,我是這樣固定的。但是現在我遇到了另一個問題,當我回收應用程序時,令牌緩存被清除(使用httpcache)。向租戶請求這些用戶並不是一個問題,他不會以沉默的方式請求它,而是來自獲取令牌的令牌可以完成這項工作。這對'我'不起作用,我總是需要註銷/登錄 – Identity

回答

0

我注意到,當你想租戶之間進行切換,你需要重新授權對目前的租戶。 我這樣工作: 1.首先登錄需要針對公共端點進行。每當我需要一個特定資源的標記時,我會試着無聲地獲取標記。

=>這可以扔2個不同的AdalSilentTokenAcquisitionException在高速緩存中找到

  • 沒有,也沒有刷新令牌發現 =>在這種情況下,我再次將用戶重定向到登錄頁面。
  • 當您在租戶之間切換時,並且這是您第一次使用您信任的租戶進行登錄時,可能會出現如下錯誤:用戶或管理員應該同意此應用程序。雖然他的房客的管理員已經將該應用程序添加到家庭租戶的目錄中。任何人知道爲什麼需要這種同意?因此,佃農A和佃戶B管理員都已獲得同意。爲什麼B中的B可信用戶仍然需要同意?

我能夠通過將用戶重定向到授權請求URL來觸發同意流程。 因此,當我得到一個AdalSilentTokenAcquisitionException,並且錯誤代碼爲「failed_to_acquire_token_silently」時,我必須將用戶重定向到由authContext(authenticationContext.GetAuthorizationRequestUrlAsync)生成的URL,當緩存被清除時,將不會找到刷新標記,然後重定向用戶辭職。

0

如果您使用的是公共端點,則通過B2B協作功能添加到目錄的訪客無法在多租戶應用或Microsoft Graph上正常工作。

公共端點將始終通過他/她的住宅承租人對用戶進行認證,而不是針對他(他)是客人的任何承租人。

爲了成功地爲客人查詢我,您需要讓他們通過租戶特定端點登錄他們作爲來賓的租戶。

見我回答這個其他職位進行了較爲深入的解釋/背景: Can users from an unmanaged Azure AD directory, sign into an Azure AD multi-tenant application which resides in a different directory?