Znane problemy w przeglądarkach Internet Explorer i Microsoft Edge (MSAL.js)
Problemy ze względu na strefy zabezpieczeń
Mieliśmy wiele raportów o problemach z uwierzytelnianiem, czyli w przeglądarce Microsoft Edge (od czasu aktualizacji przeglądarki Microsoft Edge do wersji 40.15063.0.0). Śledzimy je i poinformowaliśmy zespół przeglądarki Microsoft Edge. Chociaż przeglądarka Microsoft Edge działa w celu rozwiązania, poniżej przedstawiono opis często występujących problemów i możliwych obejść, które można zaimplementować.
Przyczyna
Przyczyną większości tych problemów jest następująca. Magazyn sesji i magazyn lokalny są partycjonowane przez strefy zabezpieczeń w przeglądarce Microsoft Edge. W tej konkretnej wersji przeglądarki Microsoft Edge, gdy aplikacja jest przekierowywana między strefami, magazyn sesji i magazyn lokalny są czyszczone. W szczególności magazyn sesji jest czyszczone w regularnej nawigacji przeglądarki, a zarówno sesja, jak i magazyn lokalny są czyszczone w trybie InPrivate przeglądarki. MSAL.js zapisuje określony stan w magazynie sesji i polega na sprawdzeniu tego stanu podczas przepływów uwierzytelniania. Po wyczyszczonej pamięci masowej sesji ten stan zostanie utracony i w związku z tym powoduje uszkodzenie środowisk.
Problemy
Nieskończone pętle przekierowania i ponowne ładowanie stron podczas uwierzytelniania. Gdy użytkownicy logują się do aplikacji w przeglądarce Microsoft Edge, są przekierowywani z powrotem ze strony logowania microsoft Entra i są zablokowani w nieskończonej pętli przekierowania, co powoduje ponowne załadowanie strony. Zwykle towarzyszy
invalid_state
mu błąd w magazynie sesji.Nieskończone pętle tokenu uzyskiwania i błąd AADSTS50058. Gdy aplikacja uruchamiana w przeglądarce Microsoft Edge próbuje uzyskać token dla zasobu, aplikacja może utknąć w nieskończonej pętli wywołania tokenu uzyskiwania. Następujący błąd jest zwracany z identyfikatora Entra firmy Microsoft w śladzie sieci:
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)
Okno podręczne nie zamyka się lub jest zablokowane podczas korzystania z logowania za pośrednictwem okna podręcznego w celu uwierzytelnienia. Podczas uwierzytelniania za pośrednictwem okna podręcznego w przeglądarce Microsoft Edge lub Internet Explorer (InPrivate) po wprowadzeniu poświadczeń i zalogowaniu się, jeśli wiele domen w strefach zabezpieczeń jest zaangażowanych w nawigację, okno podręczne nie zostanie zamknięte, ponieważ
MSAL.js
utraci uchwyt do okna podręcznego.Nie można zalogować się przy użyciu adresu URL przekierowania poprzedzonego identyfikatorem tauri. Jedynymi obsługiwanymi schematami identyfikatorów URI przekierowania są
https:
aplikacje produkcyjne ihttp://localhost
lokalne programowanie. Jeśli spróbujesz użyć innego schematu, takiego jaktauri://localhost
, dla aplikacji mobilnej lub klasycznej, zostanie wyświetlony poniższy komunikat o błędzie. Ten błąd pojawia się w wyniku projektowania zaplecza 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.
Aktualizacja: poprawka dostępna w MSAL.js 0.2.3
Poprawki problemów z pętlą przekierowania uwierzytelniania zostały wydane w MSAL.js 0.2.3. Włącz flagę storeAuthStateInCookie
w konfiguracji MSAL.js, aby skorzystać z tej poprawki. Domyślnie ta flaga ma wartość false.
Po włączeniu storeAuthStateInCookie
flagi MSAL.js używa plików cookie przeglądarki do przechowywania stanu żądania wymaganego do weryfikacji przepływów uwierzytelniania.
Uwaga
Ta poprawka nie jest jeszcze dostępna dla msal-angular
otoki i msal-angularjs
. Ta poprawka nie rozwiązuje problemu z oknami podręcznymi.
Inne obejścia
Przed wdrożeniem tych obejść upewnij się, że problem występuje tylko w określonej wersji przeglądarki Microsoft Edge i działa w innych przeglądarkach.
W pierwszym kroku, aby obejść te problemy, upewnij się, że domena aplikacji i wszystkie inne witryny zaangażowane w przekierowania przepływu uwierzytelniania są dodawane jako zaufane witryny w ustawieniach zabezpieczeń przeglądarki. Gwarantuje to, że przekierowania należą do tej samej strefy zabezpieczeń. W tym celu wykonaj następujące kroki:
- Otwórz program Internet Explorer i kliknij ustawienia (ikona koła zębatego) w prawym górnym rogu
- Wybieranie opcji internetowych
- Wybierz kartę Zabezpieczenia
- W obszarze opcji Zaufane witryny kliknij przycisk witryny i dodaj adresy URL w wyświetlonym oknie dialogowym.
Jak wspomniano wcześniej, ponieważ tylko magazyn sesji jest czyszczone podczas regularnej nawigacji, można skonfigurować MSAL.js do korzystania z magazynu lokalnego. Można to ustawić jako
cacheLocation
parametr konfiguracji podczas inicjowania biblioteki MSAL.
Należy pamiętać, że te obejścia nie rozwiążą problemu z przeglądaniem InPrivate, ponieważ zarówno sesja, jak i magazyn lokalny są czyszczone.
Problemy związane z blokowaniem wyskakujących okienek
Istnieją przypadki, w których wyskakujące okienka są blokowane, czyli w przeglądarce Microsoft Edge, na przykład gdy podczas uwierzytelniania wieloskładnikowego występuje drugie okno podręczne. Otrzymasz alert w przeglądarce, aby zezwolić na okno podręczne raz lub zawsze. Jeśli zdecydujesz się zezwolić, przeglądarka automatycznie otworzy okno podręczne i zwróci null
do niego uchwyt. W związku z tym biblioteka nie ma uchwytu dla okna i nie ma możliwości zamknięcia okna podręcznego. Ten sam problem nie występuje w przeglądarce Chrome, gdy monituje o zezwolenie na wyskakujące okna, ponieważ nie otwiera automatycznie okna podręcznego.
Aby uniknąć tego problemu, deweloperzy muszą zezwolić na wyskakujące okienka i przeglądarkę Microsoft Edge.
Następne kroki
Dowiedz się więcej o korzystaniu z MSAL.js w programie Internet Explorer.