簡體   English   中英

Azure AD SSO多租戶應用程序/ AD FS聲明提供程序問題

[英]Azure AD SSO Multi-Tenant App / AD FS Claims Provider Issue

一些背景:

我的公司(充當SP)目前通過AD FS 2.0與我們的聯盟伙伴(IdP)處理SSO。 每個合作伙伴都設置為“聲明提供者”,並創建用於轉換將發送到我們的Web應用程序的傳入聲明的規則。

認證之后,包含聲明的令牌將發布到我們的STS端點(例如https://sts.companyname.ca/adfs/ls ),在聲明中將聲明轉換並發送到我們的Web應用程序URL(例如https://companyname.ca) /externalsignin.aspx ),並由OWIN中間件在帳戶查找/創建之前進行處理。

所有這一切都完美。 現在,我們的任務是將Azure AD SSO集成到組合中,以幫助簡化啟動過程。

到目前為止,我已經在Azure中創建了一個新目錄並在其中創建了一個新應用程序。 我已將該應用程序標記為“多租戶”,並將“答復” URL設置為“ https://sts.companyname.ca/adfs/ls ”。 在服務器上的AD FS 2.0客戶端中,我創建了一個名為“ AzureAD”的新Claims Provider,並從Azure控制台上的應用程序的終結點部分導入了元數據URL。 使用我們的租戶的電子郵件測試登錄是否完美。 問題在於測試來自另一個租戶的組織電子郵件時,身份驗證失敗,並帶有錯誤的請求消息:

錯誤的要求圖片

經過一些研究,這似乎是由於為login.microsoftonline.com/tenantid構建了登錄表單,而應將login.microsoftonline.com/common用於多租戶應用程序。 因此,我從https://login.microsoftonline.com/common/federationmetadata/2007-06/federationmetadata.xml重新導入了元數據並進行了更新。 在此處輸入圖片說明

現在,當我使用另一個租戶組織帳戶登錄時,實際上可以看到一個同意請求,但是在身份驗證之后,由於令牌已為“ sts.windows.net/0000-簽名”,因此sts.companyname.ca/adfs/ls的發布失敗。 000000-000000-0000”,但AD FS中的聲明提供程序由sts.windows.net/{tenantid}占位符標識。 在此處輸入圖片說明

我不知道如何僅使用具有模板化端點的單個Azure聲明提供程序來實現此目的(我也只能添加1個Azure聲明提供程序,因為它們都使用相同的簽名證書)。

任何克服這一障礙的幫助將不勝感激。

由於Azure AD如何通過ADFS中的約束(其不允許多個索賠提供者信任)使用同一簽名密鑰的約束來發行令牌(相同的簽名密鑰,但不同的租戶頒發者)的阻抗不匹配,因此無法使用此方法。

執行此操作的方法是以下方法之一

  1. 使用Azure AD B2B邀請來自一個或多個Azure AD租戶的訪客進入您的Azure AD租戶,然后將ADFS掛接到您的租戶作為一個CP信任。
  2. 借助ADFS 2016,我們還要求將每個Azure AD租戶視為具有不同的政策/規則(針對索賠接受/擴充)的不同CP信任。 為此,我們現在允許將每個Azure AD租戶建模為唯一的CP信任。

希望這能回答你的問題。

謝謝//薩姆(@MrADFS)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM