我正在使用 MSALjs 在我的應用程式上注銷用戶。當msalService.logoutRedirect()被觸發時,頁面重定向并注銷。但是,我的應用程式沒有“不受保護的”路由,因此注銷后的重定向 ( postLogoutRedirectUri) 設定為回傳到應用程式的最后一個活動頁面。當它回傳應用程式時,MSAL 守衛會自動找到有效的 MS 會話并自動重新登錄(重定向后)。
如果我將 更改postLogoutRedirectUri為https://login.microsoftonline.com/common/oauth2/logout,則注銷確實有效,并且我已正確注銷。但是,我想立即被提示重新登錄,這就是為什么我打算回傳應用程式以便 MsalGuard 可以提示登錄。
根據最近的GitHub 問題,其中一位 MSAL 貢獻者說:
這是 B2C 運作方式的細微差別。默認情況下,當您呼叫注銷端點時,B2C 可能不會將您從聯合身份提供者中注銷,此處將對此進行更詳細的說明。不幸的是,我對 B2C 配置知之甚少,無法為您提供明確的答案,但您可能需要創建一個自定義策略,該策略重定向到您提到的 AAD 注銷端點:'https://login.microsoftonline.com/common/oauth2/注銷”,因為此端點是最終關閉您與 AAD 的會話的端點。如果需要,您還可以讓 B2C 通過您的 postLogoutRedirectUri 傳遞到此端點,以便 AAD 在注銷后將您重定向回您的應用程式,而不是在“關閉此視窗”螢屏上結束。
我該如何設定才能正確觸發注銷并注銷所有會話?
此外,如果我手動將 openid-config 的元資料更改為"end_session_endpoint"與上面的 microsoftonline logout 鏈接相同,則該行為似乎更符合我的預期。
uj5u.com熱心網友回復:
您可以將應用程式注銷后重定向 uri 發送到聯合 IdP 注銷 url。您可以在 MSAL 配置物件中設定 postLogoutRedirectURI。
在聯合 IdP 中,將注銷 url 設定為應用程式。
方法僅在您使用 1 個聯合 IdP 時有效,并且是唯一可用的 IdP。
function signOut() {
const logoutRequest = {
postLogoutRedirectUri: "https://login.microsoftonline.com/common/oauth2/v2.0/logout?
post_logout_redirect_uri=https://myapp.com"
msalConfig.auth.redirectUri
};
myMSALObj.logoutPopup(logoutRequest);
}
否則,在您的應用程式中創建一個不受保護的頁面,該頁面將重定向到受保護的頁面,但將 MSAL 提示引數設定為“登錄”。至少會出現 B2C 登錄頁面,并允許用戶選擇他們想要登錄的方式。如果他們選擇聯合 IdP,他們可能仍會獲得 SSO。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/406466.html
標籤:
