Problemas conhecidos nos navegadores Internet Explorer e Microsoft Edge (MSAL.js)
Problemas devido a zonas de segurança
Tivemos vários relatórios de problemas com autenticação em, ou seja, e Microsoft Edge (desde a atualização da versão do navegador Microsoft Edge para 40.15063.0.0). Estamos acompanhando e informamos a equipe do Microsoft Edge. Enquanto o Microsoft Edge trabalha em uma resolução, aqui está uma descrição dos problemas que ocorrem com freqüência e as possíveis soluções alternativas que podem ser implementadas.
Motivo
A causa para a maioria desses problemas é a seguinte. O armazenamento de sessão e o armazenamento local são particionados por zonas de segurança no navegador Microsoft Edge. Nesta versão específica do Microsoft Edge, quando o aplicativo é redirecionado entre zonas, o armazenamento de sessão e o armazenamento local são limpos. Especificamente, o armazenamento da sessão é limpo na navegação regular do navegador e a sessão e o armazenamento local são limpos no modo InPrivate do navegador. MSAL.js salva determinado estado no armazenamento da sessão e depende da verificação desse estado durante os fluxos de autenticação. Quando o armazenamento da sessão é limpo, esse estado é perdido e, portanto, resulta em experiências interrompidas.
Problemas
Loops de redirecionamento infinitos e recargas de página durante a autenticação. Quando os usuários entram no aplicativo no Microsoft Edge, eles são redirecionados de volta da página de login do Microsoft Entra e ficam presos em um loop de redirecionamento infinito, resultando em recarregamentos repetidos de página. Isso geralmente é acompanhado por um
invalid_state
erro no armazenamento da sessão.Infinito adquirir loops de token e AADSTS50058 erro. Quando um aplicativo executado no Microsoft Edge tenta adquirir um token para um recurso, o aplicativo pode ficar preso em um loop infinito da chamada de token de adquirência. O seguinte erro é retornado do Microsoft Entra ID em seu rastreamento de rede:
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)
A janela pop-up não fecha ou fica presa ao usar a janela pop-up de login para autenticar. Ao autenticar através de uma janela pop-up no Microsoft Edge ou Internet Explorer (InPrivate), depois de inserir credenciais e entrar, se vários domínios em zonas de segurança estiverem envolvidos na navegação, a janela pop-up não fecha porque
MSAL.js
perde o identificador para a janela pop-up.Não é possível fazer login usando URL de redirecionamento prefixado com tauri. Os únicos esquemas suportados para URIs de redirecionamento são
https:
para aplicativos de produção ehttp://localhost
para desenvolvimento local. Se você tentar usar um esquema diferente, comotauri://localhost
, para um aplicativo móvel ou de desktop, a mensagem de erro abaixo será exibida. Este erro surge como resultado de como o back-end do SPA é projetado.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.
Atualização: correção disponível no MSAL.js 0.2.3
Correções para os problemas de loop de redirecionamento de autenticação foram lançadas no MSAL.js 0.2.3. Habilite o sinalizador storeAuthStateInCookie
na configuração do MSAL.js para aproveitar essa correção. Por padrão, esse sinalizador é definido como false.
Quando o storeAuthStateInCookie
sinalizador está ativado, MSAL.js usa os cookies do navegador para armazenar o estado de solicitação necessário para a validação dos fluxos de autenticação.
Nota
Essa correção ainda não está disponível para os msal-angular
wrappers e msal-angularjs
. Essa correção não resolve o problema com janelas pop-up.
Outras soluções alternativas
Certifique-se de testar se o problema está ocorrendo apenas na versão específica do navegador Microsoft Edge e funciona nos outros navegadores antes de adotar essas soluções alternativas.
Como primeiro passo para contornar esses problemas, certifique-se de que o domínio do aplicativo e quaisquer outros sites envolvidos nos redirecionamentos do fluxo de autenticação sejam adicionados como sites confiáveis nas configurações de segurança do navegador. Isso garante que os redirecionamentos pertençam à mesma zona de segurança. Para o fazer, siga estes passos:
- Abra o Internet Explorer e clique nas configurações (ícone de engrenagem) no canto superior direito
- Selecione Opções da Internet
- Selecione a guia Segurança
- Na opção Sites confiáveis, clique no botão sites e adicione as URLs na caixa de diálogo que se abre.
Como mencionado anteriormente, como apenas o armazenamento da sessão é limpo durante a navegação regular, você pode configurar MSAL.js para usar o armazenamento local. Isso pode ser definido como o parâmetro config durante a inicialização do
cacheLocation
MSAL.
Observe que essas soluções alternativas não resolverão o problema da navegação InPrivate, uma vez que a sessão e o armazenamento local são limpos.
Problemas devido a bloqueadores de pop-ups
Há casos em que os pop-ups são bloqueados, ou seja, ou no Microsoft Edge, por exemplo, quando ocorre um segundo pop-up durante a autenticação multifator. Você receberá um alerta no navegador para permitir a janela pop-up uma ou sempre. Se você optar por permitir, o navegador abre a janela pop-up automaticamente e retorna um null
identificador para ela. Como resultado, a biblioteca não tem um identificador para a janela e não há como fechar a janela pop-up. O mesmo problema não acontece no Chrome quando lhe pede para permitir janelas pop-up porque não abre automaticamente uma janela pop-up.
Como solução alternativa, os desenvolvedores precisam permitir pop-ups, ou seja, e o Microsoft Edge antes de começarem a usar seu aplicativo para evitar esse problema.
Próximos passos
Saiba mais sobre como usar o MSAL.js no Internet Explorer.