Поделиться через


Известные проблемы с браузерами Internet Explorer и Microsoft Edge browsers (MSAL.js)

Проблемы из-за зон безопасности

У нас было несколько отчетов о проблемах с проверкой подлинности, то есть в 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 в трассировке сети:

    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 или Internet Explorer (InPrivate), после ввода учетных данных и входа, если в навигации участвует несколько доменов в зонах безопасности, всплывающее окно не закрывается, так как MSAL.js теряет дескриптор во всплывающем окне.

  • Не удается войти с помощью префикса URL-адреса перенаправления с помощью таури. Единственными поддерживаемыми схемами перенаправления являются 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 выпущены исправления проблем, связанных с циклом перенаправления проверки подлинности. Включите флаг storeAuthStateInCookie в конфигурации MSAL.js, чтобы воспользоваться этим исправлением. По умолчанию этому флагу присвоено значение False.

storeAuthStateInCookie Если флаг включен, MSAL.js использует файлы cookie браузера для хранения состояния запроса, необходимого для проверки потоков проверки подлинности.

Примечание.

Это исправление пока не доступно для программ-оболочек msal-angular и msal-angularjs. Это исправление не устраняет проблему всплывающих окон.

Другие обходные пути

Не забудьте убедиться, что проблема возникает только в определенной версии браузера Microsoft Edge и отсутствует в других браузерах, прежде чем применять эти обходные пути.

  1. В качестве первого шага, чтобы обойти эти проблемы, убедитесь, что домен приложения и любые другие сайты, участвующие в перенаправлении потока проверки подлинности, добавляются в качестве доверенных сайтов в параметрах безопасности браузера. Это гарантирует, что перенаправления принадлежат той же зоне безопасности. Для этого выполните следующие шаги:

    • Откройте Internet Explorer и нажмите Настройки (значок шестеренки) в правом верхнем углу.
    • Выберите Свойства обозревателя.
    • Перейдите на вкладку Безопасность.
    • В разделе Доверенные сайты нажмите кнопку Сайты и в открытом диалоговом окне добавьте нужные URL-адреса.
  2. Как отмечено ранее, поскольку при стандартной навигации данные удаляются только из хранилища сеансов, можно настроить MSAL.js для использования только локального хранилища. Это можно сделать с помощью параметра конфигурации cacheLocation при инициализации MSAL.

Обратите внимание, что эти обходные пути не устраняют проблему для просмотра InPrivate, так как сеанс и локальное хранилище очищаются.

Проблемы, связанные с блокировщиками всплывающих окон

Существуют случаи, когда всплывающие окна блокируются, то есть в Microsoft Edge, например при возникновении второго всплывающего окна во время многофакторной проверки подлинности. Вы получите оповещение в браузере, чтобы разрешить всплывающее окно один раз или всегда. Если вы разрешите отображать всплывающие окна, браузер откроет автоматически всплывающее окно и вернет для него дескриптор null. В результате библиотека не имеет дескриптора для окна и нет способа закрыть всплывающее окно. Эта же проблема не возникает в Chrome, когда появится запрос на разрешение всплывающих окон, так как он не открывает всплывающее окно автоматически.

В качестве обходного решения разработчикам необходимо разрешить всплывающие окна, т. е. Microsoft Edge, прежде чем начать использовать свое приложение, чтобы избежать этой проблемы.

Следующие шаги

Узнайте больше об использовании MSAL.js в Internet Explorer.