Internet Explorer 和 Microsoft Edge 瀏覽器的已知問題 (MSAL.js)

安全性區域所造成的問題

我們在 IE 和 Microsoft Edge 中有多個驗證問題報告(因為 Microsoft Edge 瀏覽器版本更新 為 40.15063.0.0 )。 我們正在追蹤這些專案,並已通知 Microsoft Edge 小組。 雖然 Microsoft Edge 適用于解決方案,但以下是常見問題的描述,以及可實作的可能因應措施。

原因

這些問題大部分的原因如下。 會話儲存體和本機儲存體會依 Microsoft Edge 瀏覽器中的安全性區域進行分割。 在此特定版本的 Microsoft Edge 中,當應用程式跨區域重新導向時,會清除會話儲存體和本機儲存體。 具體而言,會話儲存體會在一般瀏覽器導覽中清除,而且會話和本機儲存體都會在瀏覽器的 InPrivate 模式中清除。 MSAL.js 會將特定狀態儲存在會話儲存體中,並依賴在驗證流程期間檢查此狀態。 清除會話儲存體時,此狀態會遺失,因此會導致體驗中斷。

問題

  • 驗證期間 無限重新導向迴圈和頁面重載。 當使用者登入 Microsoft Edge 上的應用程式時,他們會從 Microsoft Entra 登入頁面重新導向回來,並卡在無限重新導向迴圈中,導致重複的頁面重載。 這通常伴隨著 invalid_state 會話儲存體中的錯誤。

  • 無限取得權杖迴圈和AADSTS50058錯誤 。 當在 Microsoft Edge 上執行的應用程式嘗試取得資源的權杖時,應用程式可能會卡在取得權杖呼叫的無限迴圈中。 下列錯誤會從網路追蹤中的 Microsoft Entra ID 傳回:

    Error :login_required; Error description:AADSTS50058: A silent sign-in request was sent but no user is signed in. The cookies used to represent the user's session were not sent in the request to Azure AD. This can happen if the user is using Internet Explorer or Edge, and the web app sending the silent sign-in request is in different IE security zone than the Azure AD endpoint (login.microsoftonline.com)

  • 快顯視窗在透過快顯視窗進行驗證 時不會關閉或停滯。 在 Microsoft Edge 或 IE (InPrivate) 中透過快顯視窗進行驗證時,輸入認證並登入之後,如果跨安全性區域有多個網域參與流覽,快顯視窗就不會關閉,因為 MSAL.js 會遺失快顯視窗的控制碼。

  • 無法使用前面加上 tauri 的重新導向 URL 來登入。 重新導向 URI 的唯一支援配置是 https: 用於生產應用程式和 http://localhost 本機開發。 如果您嘗試針對行動或傳統型應用程式使用不同的配置, tauri://localhost 則會出現下列錯誤訊息。 發生此錯誤的原因是 SPA 的後端設計方式。

    AADSTS90023: Cross-origin token redemption is permitted only for the 'Single-Page Application' client-type or 'Native' client-type with origin registered in AllowedOriginForNativeAppCorsRequestInOAuthToken allow list.

更新:修正 MSAL.js 0.2.3 中可用的修正

MSAL.js 0.2.3 發行驗證重新導向迴圈問題的修正程式。 啟用 MSAL.js 組態中的旗標 storeAuthStateInCookie ,以利用此修正程式。 根據預設,此旗標會設定為 false。

storeAuthStateInCookie啟用旗標時,MSAL.js 會使用瀏覽器 Cookie 來儲存驗證驗證流程所需的要求狀態。

注意

和 包裝函式尚 msal-angularmsal-angularjs 無法使用此修正程式。 此修正無法解決快顯視窗的問題。

其他因應措施

請務必測試您的問題只會在特定版本的 Microsoft Edge 瀏覽器上發生,並在採用這些因應措施之前,在其他瀏覽器上運作。

  1. 在解決這些問題的第一個步驟中,請確定在瀏覽器的安全性設定中,將應用程式域和驗證流程重新導向所涉及的任何其他網站新增為信任的網站。 這可確保重新導向屬於相同的安全性區域。 若要如此做,請執行下列步驟:

    • 開啟 Internet Explorer ,然後按一下 右上角的設定 (齒輪圖示)
    • 選取 [網際網路選項]
    • 選取 [安全性] 索引 標籤
    • 在 [ 信任的網站] 選項下 ,按一下 [網站 ] 按鈕,然後在開啟的對話方塊中新增 URL。
  2. 如先前所述,因為只有會話儲存體會在一般導覽期間清除,因此您可以將 MSAL.js 設定為改用本機儲存體。 這可以在初始化 MSAL 時設定為 cacheLocation 組態參數。

請注意,由於清除會話和本機儲存體,這些因應措施無法解決 InPrivate 瀏覽的問題。

快顯視窗封鎖程式所造成的問題

在 IE 或 Microsoft Edge 中封鎖快顯時,例如在多重要素驗證 期間 發生第二個快顯視窗時。 您會在瀏覽器中收到警示,以允許快顯視窗一次或一律顯示。 如果您選擇允許,瀏覽器會自動開啟快顯視窗,並為其傳 null 回控制碼。 因此,程式庫沒有視窗的控制碼,而且無法關閉快顯視窗。 當 Chrome 提示您允許快顯視窗時,不會發生相同的問題,因為它不會自動開啟快顯視窗。

因應措施 ,開發人員必須先在 IE 和 Microsoft Edge 中允許快顯,才能開始使用其應用程式以避免此問題。

下一步

深入瞭解 在 Internet Explorer 中使用 MSAL.js。