Známé problémy v prohlížečích Internet Explorer a Microsoft Edge (MSAL.js)
Problémy způsobené zónami zabezpečení
Měli jsme několik zpráv o problémech s ověřováním a Microsoft Edge (od aktualizace verze prohlížeče Microsoft Edge na 40.15063.0.0). Sledujeme je a informovali jsme tým Microsoft Edge. I když Microsoft Edge funguje na řešení, tady je popis často se vyskytujících problémů a možných alternativních řešení, která je možné implementovat.
Příčina
Příčina většiny těchto problémů je následující. Úložiště relací a místní úložiště jsou rozdělené podle zón zabezpečení v prohlížeči Microsoft Edge. V této konkrétní verzi Microsoft Edge se při přesměrování aplikace napříč zónami vymaže úložiště relací a místní úložiště. Konkrétně se úložiště relace vymaže v běžné navigaci v prohlížeči a relace i místní úložiště se vymažou v režimu InPrivate prohlížeče. MSAL.js uloží určitý stav v úložišti relací a spoléhá na kontrolu tohoto stavu během ověřovacích toků. Když se vymaže úložiště relace, dojde ke ztrátě tohoto stavu, takže dojde k poškození.
Problémy
Nekonečné smyčky přesměrování a opětovné načtení stránky během ověřování. Když se uživatelé přihlásí k aplikaci v Microsoft Edgi, přesměrují se zpět z přihlašovací stránky Microsoft Entra a zablokují se ve smyčce nekonečného přesměrování, což vede k opakovanému načítání stránky. K tomu obvykle dochází v úložišti relací k
invalid_state
chybě.Nekonečná smyčka získání tokenu a AADSTS50058 chyba. Když se aplikace spuštěná v Microsoft Edgi pokusí získat token pro prostředek, může se aplikace zaseknout v nekonečné smyčce volání tokenu získání. Následující chyba se vrátí z ID Microsoft Entra v trasování sítě:
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)
Automaticky otevírané okno se nezavře nebo se zasekne při ověřování pomocí automaticky otevíraných oken. Při ověřování prostřednictvím automaticky otevíraného okna v Microsoft Edgi nebo Internet Exploreru (InPrivate) po zadání přihlašovacích údajů a přihlášení se při navigaci nezavře více domén napříč zónami zabezpečení, automaticky otevírané okno se nezavře, protože
MSAL.js
ztratí popisovač automaticky otevíraného okna.Nelze se přihlásit pomocí adresy URL přesměrování s předponou tauri. Jediná podporovaná schémata pro identifikátory URI přesměrování jsou
https:
určená pro produkční aplikace ahttp://localhost
místní vývoj. Pokud se pokusíte použít jiné schéma, napříkladtauri://localhost
, pro mobilní nebo desktopovou aplikaci, zobrazí se následující chybová zpráva. K této chybě dochází v důsledku toho, jak je navržen back-end 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.
Aktualizace: Oprava dostupná v MSAL.js 0.2.3
Opravy problémů s smyčkou přesměrování ověřování byly vydány v MSAL.js 0.2.3. Pokud chcete tuto opravu využít, povolte příznak storeAuthStateInCookie
v konfiguraci MSAL.js. Ve výchozím nastavení je tento příznak nastaven na false.
storeAuthStateInCookie
Pokud je příznak povolený, MSAL.js používá soubory cookie prohlížeče k uložení stavu požadavku požadovaného k ověření toků ověřování.
Poznámka:
Tato oprava ještě není k dispozici pro obálky msal-angular
a msal-angularjs
obálky. Tato oprava neřeší problém s automaticky otevíranými okny.
Další alternativní řešení
Než začnete používat tato alternativní řešení, nezapomeňte otestovat, že k vašemu problému dochází jenom v konkrétní verzi prohlížeče Microsoft Edge, a teprve potom tento problém funguje v jiných prohlížečích.
Jako první krok k těmto problémům se ujistěte, že doména aplikace a všechny další weby zapojené do přesměrování toku ověřování se přidají jako důvěryhodné weby v nastavení zabezpečení prohlížeče. Tím se zajistí, že přesměrování patří do stejné zóny zabezpečení. Postup je následující:
- Otevřete Internet Explorer a klikněte na nastavení (ikona ozubeného kola) v pravém horním rohu.
- Výběr možností internetu
- Výběr karty Zabezpečení
- Pod možností Důvěryhodné weby klikněte na tlačítko Weby a přidejte adresy URL v dialogovém okně, které se otevře.
Jak už bylo zmíněno dříve, protože během pravidelné navigace se vymaže jenom úložiště relací, můžete nakonfigurovat MSAL.js pro použití místního úložiště. Můžete ho
cacheLocation
nastavit jako parametr konfigurace při inicializaci knihovny MSAL.
Upozorňujeme, že tato alternativní řešení problém s procházením InPrivate nevyřeší, protože se vymažou relace i místní úložiště.
Problémy způsobené blokováním automaticky otevírané aplikace
Existují případy, kdy se automaticky otevírané okno zablokuje, tj. Microsoft Edge, například v případě, že během vícefaktorového ověřování dojde k druhému automaticky otevíraným oknu. V prohlížeči se zobrazí upozornění, které povolí automaticky otevírané okno jednou nebo vždy. Pokud se rozhodnete povolit, prohlížeč automaticky otevře automaticky otevírané okno a vrátí null
popisovač. V důsledku toho knihovna nemá popisovač okna a neexistuje způsob, jak automaticky otevírané okno zavřít. Stejný problém se v Chromu nestane, když vás vyzve k povolení automaticky otevíraných oken, protože automaticky neotevře automaticky automaticky otevírané okno.
Jako alternativní řešení musí vývojáři povolit automaticky otevírané okno a Microsoft Edge, aby se tomuto problému vyhnuli.
Další kroky
Přečtěte si další informace o používání MSAL.js v Internet Exploreru.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro