[英]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中的約束(其不允許多個索賠提供者信任)使用同一簽名密鑰的約束來發行令牌(相同的簽名密鑰,但不同的租戶頒發者)的阻抗不匹配,因此無法使用此方法。
執行此操作的方法是以下方法之一
希望這能回答你的問題。
謝謝//薩姆(@MrADFS)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.