Problemas conhecidos nos navegadores Internet Explorer e Microsoft Edge (MSAL.js)

Problemas devido a zonas de segurança

Recebemos vários relatórios de problemas com a autenticação no IE e no Microsoft Edge (desde a atualização da versão do navegador Microsoft Edge para 40.15063.0.0). Estamos monitorando esses problemas e já informamos a equipe do Microsoft Edge. Enquanto o Microsoft Edge trabalha em uma resolução, veja uma descrição dos problemas mais frequentes e as possíveis soluções alternativas que podem ser implementadas.

Causa

Veja a seguir a causa da maioria desses problemas. Os armazenamentos de sessão e 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, os armazenamentos de sessão e local são limpos. Especificamente, o armazenamento de sessão é limpo na navegação normal, e tanto o armazenamento de sessão quanto o local são limpos na navegação InPrivate. A MSAL.js salva um determinado estado no armazenamento de sessão e verifica esse estado durante os fluxos de autenticação. Quando o armazenamento de sessão é limpo, esse estado é perdido e, portanto, resulta em experiências ruins.

Problemas

  • Loops de redirecionamento infinitos e recarregamentos de página durante a autenticação. Quando os usuários fazem logon no aplicativo no Microsoft Edge, eles são redirecionados da página de entrada do Microsoft Entra e ficam presos em um loop de redirecionamento infinito, que faz com que a página seja carregada repetidamente. Normalmente, também ocorre um erro invalid_state no armazenamento de sessão.

  • Loops de token de aquisição infinitos e erro AADSTS50058. 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 aquisição de token. O seguinte erro é retornado do Microsoft Entra ID no 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 o logon por meio da janela pop-up para autenticar. Ao autenticar através de uma janela pop-up no Microsoft Edge ou IE (InPrivate), após inserir as credenciais e fazer o login, se vários domínios através de zonas de segurança estiverem envolvidos na navegação, a janela pop-up não fechará porque MSAL.js perde o identificador para a janela de pop-up.

  • Não é possível fazer logon usando a URL de redirecionamento prefixada com tauri. Os únicos esquemas com suporte para URIs de redirecionamento são https: para aplicativos de produção e http://localhost para desenvolvimento local. Se você tentar usar um esquema diferente, como tauri://localhost, para um aplicativo móvel ou de desktop, a mensagem de erro abaixo será exibida. Esse erro ocorre como resultado de como o back-end do SPA foi 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 na MSAL.js 0.2.3

Correções para os problemas de loop de redirecionamento de autenticação foram liberadas na MSAL.js 0.2.3. Habilite o sinalizador storeAuthStateInCookie na configuração da MSAL.js para usar a correção. Por padrão, esse sinalizador é definido como false.

Quando o sinalizador storeAuthStateInCookie está habilitado, o MSAL.js usa os cookies do navegador para armazenar o estado da solicitação necessário para a validação dos fluxos de autenticação.

Observação

Essa correção ainda não está disponível para os wrappers msal-angular e msal-angularjs. Essa correção não resolve o problema das janelas pop-up.

Outras soluções alternativas

Verifique se o problema ocorre somente na versão específica do navegador Microsoft Edge e se funciona nos outros navegadores antes de usar estas soluções alternativas.

  1. Como primeira etapa para solucionar esses problemas, verifique se o domínio do aplicativo e qualquer outro site 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 fazer isso, siga estas etapas:

    • Abra o Internet Explorer e clique em Configurações (ícone de engrenagem) no canto superior direito
    • Clique em Opções da Internet
    • Selecione a guia Segurança
    • Na opção Sites confiáveis, clique no botão Sites e adicione as URLs à caixa de diálogo que se abre.
  2. Já mencionamos que como somente o armazenamento de sessão é limpo durante a navegação normal, você pode configurar a MSAL.js para usar o armazenamento local. Isso pode ser definido como o parâmetro configuração cacheLocation ao inicializar a MSAL.

Observe que essas soluções alternativas não resolverão o problema da navegação InPrivate, pois tanto a sessão quanto o armazenamento local são limpos.

Problemas devido a bloqueadores de pop-ups

Existem casos em que os pop-ups são bloqueados no IE ou no Microsoft Edge. Por exemplo, quando um segundo pop-up ocorre durante a autenticação multifator. Você receberá um alerta no navegador para permitir a janela pop-up uma vez ou sempre. Se optar por permitir, o navegador abrirá a janela pop-up automaticamente e retornará um identificador null 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 ocorre no Chrome quando ele solicita que você permita janelas pop-up, pois ele não abre automaticamente uma janela pop-up.

Como solução alternativa, os desenvolvedores precisam permitir pop-ups no IE e no Microsoft Edge antes de começar a usar o aplicativo para evitar esse problema.

Próximas etapas

Saiba mais sobre como Usar a MSAL.js no Internet Explorer.