簡體   English   中英

SAML IdP SLO(單次注銷)與 Azure AD B2C 失敗

[英]SAML IdP SLO (single logout) with Azure AD B2C is failing

我們有一個帶有自定義策略的 Azure AD B2C 實例,以允許用戶使用來自外部 SAML 身份提供商的憑據進行簽名,配置基於此 Microsoft Doc: https://docs.microsoft.com/en-us/azure/活動目錄-b2c/identity-provider-generic-saml?tabs=windows&pivots=b2c-custom-policy

除單次注銷 (SLO) 請求外,自定義策略均有效。 有趣的是,在 Chrome 中,SLO 請求有效,但在 Firefox 和 Safari 中失敗。

在注銷流程期間,瀏覽器(本示例中使用 Firefox)接收來自 Azure AD B2C 的帶有 SAML 注銷請求的負載。 然后將有效負載加載到 iframe 中,以便可以將 SAML 注銷請求發布到 SAML IdP。 在下圖中客戶端腳本的第 41 行中,您可以看到 iframe 在方法 frameLoader 中附加到 DOM,這就是請求失敗的地方。

客戶端腳本的圖像

這是調用 frameLoader 的異常的堆棧跟蹤。

堆棧跟蹤的圖像

我認為這個問題與 cookies 和跨站點請求偽造 (CSRF) 有關,所以我為 Azure AD B2C 配置了一個自定義域,但這並沒有解決問題。 我還認為它與 cookie 中的 SameSite 屬性有關,所以我嘗試編輯其中一個,但這並沒有解決問題。

有沒有人遇到過這個問題並知道如何解決?

在您的用例中這可能不是問題,但是通過 HTTP 重定向發送時 Azure LogoutResponses 中有一個功能。 以小寫形式編碼。 您顯示的示例確實表明小寫大寫差異 %3a 而不是 %3A 在另一個圖像中。

解決方法是讓 SAML 庫在大多數情況下使用 REDIRECT_URI。 作為一種技巧,您可以用小寫字符替換編碼中的字母。

如果這是您的問題,則問題是簽名無法匹配,因為 a 和 A 不相等。

暫無
暫無

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

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