1

我在Azure AD中創建了應用程序,並翻轉了多租戶開關以使應用程序成爲多租戶應用程序。創建多租戶天青AD應用程序的服務主體以在其他AAD租戶中公開其權限

然後,我按照文章How to sign in any Azure Active Directory (AD) user using the multi-tenant application pattern中列出的步驟將其他Azure AD租戶的用戶登錄到我的多租戶應用程序。

代碼看起來像如下

string aadInstance = "https://login.microsoftonline.com/{0}"; 
string tenant = "common"; 
string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant); 

Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext context = new Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext(authority); 

AuthenticationResult result = await context.AcquireTokenAsync("https://XXXX.onmicrosoft.com/TodoListServiceMT", AppIdOfAppInDifferentTenant, new Uri("https://localhost:44399/"), new PlatformParameters(PromptBehavior.Always)); 

但認證過程中,我一直運行到下面的錯誤..

AADSTS65005:客戶端應用程序已請求訪問資源 「https://XXXX.onmicrosoft.com/TodoListServiceMT」 。這個請求 失敗,因爲它 requiredResourceAccess列表中的客戶端沒有指定該資源

對錯誤的修正要求我在其他Azure的AD租戶添加權限爲我的多租戶應用程序在我的客戶端應用程序。

但我無法找到我的多租戶應用程序在配置權限屏幕在我的客戶端應用程序在其他Azure AD租戶。我在該列表中看到的所有內容都是Azure AD Graph,ARM和Azure Active Directory。

有沒有人成功嘗試過這種方法?在其他Azure AD租戶中公開我的多租戶應用程序需要做些什麼?

租戶,在這裏工作的應用程序和資源的基本輪廓..

Tenant A 
    -> Multi-tenant App, resource id(App Id URI)-"https://XXXX.onmicrosoft.com/TodoListServiceMT" 

Tenant B 
    -> Client App (AppIdOfAppInDifferentTenant) 

爲了驗證,我在租戶b。使用管理員用戶

我嘗試添加了AppIdOfAppInDifferentTenant到多-tenant應用程序清單的已知客戶端應用程序部分,但只能在同一租戶中添加應用程序的Ids應用程序。

解決方案

我仍然不知道爲什麼我的代碼是不是能夠產生使用 一個同意 提示註冊成功的SP,但我試圖同新發布的Azure Active Directory V2 PowerShell Module 和它爲我工作。

不同承租人在 中創建多租戶應用程序的SP的命令順序如下。

Connect-AzureAD -TenantId "TenantId as Guid" 
New-AzureADServicePrincipal -AppId "Client/Application Id of the multi tenant application" 

一旦命令成功完成,多租戶應用程序將 開始在客戶端的「必需的權限」屏幕 應用

+0

您能否在這裏描述不同的應用程序和租戶?例如:租戶A:客戶端應用程序1,資源應用程序1。租戶B:用戶1.客戶端應用程序1需要調用資源應用程序1.來自租戶B的用戶1正嘗試登錄到客戶端應用程序1,並收到客戶端應用程序1尚未將資源應用程序1註冊爲必需的資源訪問權限。 –

回答

1

一般來說,你露面可以嘗試使用租戶2中的帳戶登錄您的租戶1中的應用程序,成功登錄後,您的應用程序將自動添加到租戶2中。您可以嘗試按照以下步驟操作:

  1. 在AD應用程序的配置刀片啓用多租戶:使用阿達爾時 enter image description here

  2. 修改你的配置,設置tenantIdcommon

  3. 運行應用程序,使用用戶租戶2登錄您的應用程序。 enter image description here
    接受來自您的應用程序的許可同意,承租人1 enter image description here

  4. 成功登錄後,你可以找到你的應用程序在租戶加2
    enter image description here

+0

您在第2步中使用的資源是什麼?這些正是我所遵循的步驟(請參閱上面我更新的問題)。什麼 –

+0

我沒有設置資源。 –

+0

我正在使用ADAL的AcquireTokenAsync()方法,其所有重載方法都需要資源作爲參數。你能幫我提供你的代碼樣本嗎? –

0

加里·劉的回答是主要是正確的,並概述租戶B中的服務負責人的創建方式。完成後,您應該能夠:

  1. 轉到新的門戶網站
  2. 查找下應用註冊記憶
  3. 轉到您的客戶端應用程序,以所需的權限
  4. 點擊添加
  5. 點擊選擇一個API
  6. 進入多租戶應用的名稱或其出現在搜索欄中的部分名稱
  7. 選擇多租戶應用程序,然後定義客戶需要的權限
+0

我已經按照這些步驟,並得到上述錯誤,而不是一個同意提示 –

+0

如果你仍然有錯誤,你在帖子中提到,你沒有在客戶端應用程序中添加所需的訪問權限。要做到這一點,你必須通過服務應用程序的同意,以便服務負責人在租戶B中創建。 – juunas

+1

這正是我卡住的地方。我讓我的應用程序成爲多租戶應用程序,現在我正嘗試爲不同租戶中的多租戶應用程序提供訪問權限。如何讓多租戶應用程序的許可顯示在不同租戶的應用程序中? –