Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 pracuje nad rozwiązaniem, poniżej przedstawiono opis najczęściej występujących problemów oraz możliwych obejść do zaimplementowania.
Przyczyna
Przyczyną większości tych problemów jest następująca. Pamięć sesji i pamięć lokalna są podzielone według stref 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 pamięć sesji jest czyszczona podczas zwykłej pracy przeglądarki, a zarówno pamięć sesji, jak i pamięć lokalna 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 wyczyszczeniu pamięci masowej sesji ten stan zostaje utracony, co powoduje zakłócenia w działaniu.
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 mu błąd w
invalid_state
magazynie sesji.Nieskończone pętle pozyskiwania tokenów i błąd AADSTS50058. Gdy aplikacja uruchamiana w przeglądarce Microsoft Edge próbuje uzyskać token dostępu do zasobu, może utknąć w nieskończonej pętli wywołań żądania tokenu. Następujący błąd jest zwracany przez Microsoft Entra ID w śledzeniu sieciowym:
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 popup nie zamyka się lub jest zablokowane podczas logowania w celu uwierzytelnienia. Podczas uwierzytelniania w oknie wyskakującym w przeglądarce Microsoft Edge lub Internet Explorer (InPrivate), po wprowadzeniu poświadczeń i zalogowaniu się, jeśli różne domeny w różnych strefach bezpieczeństwa uczestniczą w nawigacji, wyskakujące okienko nie zamknie się, ponieważ
MSAL.js
utraci połączenie z oknem.Nie można zalogować się, ponieważ adres URL przekierowania ma przedrostek tauri. Jedynymi obsługiwanymi schematami dla identyfikatorów URI przekierowania są
https:
dla aplikacji produkcyjnych ihttp://localhost
dla lokalnego rozwoju. 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 opakowań msal-angular
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ż podczas regularnej nawigacji wyczyszczona jest tylko pamięć sesji, można skonfigurować MSAL.js do korzystania z pamięci lokalnej. 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ą usuwane.
Problemy związane z blokowaniem wyskakujących okienek
Istnieją przypadki, w których wyskakujące okienka są blokowane, takie jak w przeglądarce Microsoft Edge, na przykład gdy podczas wieloskładnikowego uwierzytelniania występuje drugi popup. Otrzymasz alert w przeglądarce, który pozwoli ci zaakceptować okno podręczne jednorazowo lub na stałe. 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 pojawia się w przeglądarce Chrome, gdy prosi o zezwolenie na okna wyskakujące, ponieważ nie otwiera ich automatycznie.
Jako obejście, deweloperzy muszą zezwolić na wyskakujące okienka w przeglądarce Microsoft Edge, zanim zaczną korzystać ze swojej aplikacji, aby uniknąć tego problemu.
Następne kroki
Dowiedz się więcej o korzystaniu z MSAL.js w programie Internet Explorer.