Problemas conocidos en los exploradores Internet Explorer y Microsoft Edge (MSAL.js)

Problemas debidos a zonas de seguridad

Hemos recibido varios informes de problemas con la autenticación en IE y Microsoft Edge (desde la actualización de la versión de Microsoft Edge a 40.15063.0.0). Estamos realizando un seguimiento de estos problemas y hemos informado al equipo de Microsoft Edge. Si bien Microsoft Edge trabaja en una solución, aquí tiene una descripción de los problemas que ocurren con mayor frecuencia y las posibles soluciones que se pueden implementar.

Causa

La causa de la mayoría de estos problemas es la siguiente. El almacenamiento de sesión y el almacenamiento local están divididos por zonas de seguridad en el explorador Microsoft Edge. En esta versión particular de Microsoft Edge, cuando la aplicación se redirige a través de las zonas, se borran el almacenamiento de la sesión y el almacenamiento local. Específicamente, el almacenamiento de la sesión se borra de la navegación normal del explorador y, por ello, tanto la sesión como el almacenamiento local se borran en el modo InPrivate del explorador. MSAL.js guarda cierto estado en el almacenamiento de la sesión y comprueba este estado durante los flujos de autenticación. Cuando se borra el almacenamiento de la sesión, este estado se pierde y, por lo tanto, las experiencias se interrumpen.

Issues

  • Bucles de redirección y recargas de páginas infinitos durante la autenticación. Cuando los usuarios inician sesión en la aplicación en Microsoft Edge, son redirigidos de vuelta desde la página de inicio de sesión de Microsoft Entra y se quedan en un bucle de redirección infinito que resulta en repetidas recargas de la página. Esto suele ir acompañado de un error invalid_state en el almacenamiento de la sesión.

  • Bucles de adquisición de token infinitos y el error AADSTS50058. Cuando una aplicación que se ejecuta en Microsoft Edge intenta adquirir un token para un recurso, la aplicación puede quedarse en un bucle infinito en plena llamada al token de adquisición. El error siguiente es devuelto por Microsoft Entra ID en su seguimiento de red:

    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)

  • La ventana emergente no se cierra o se bloquea cuando se usa el inicio de sesión a través de la ventana emergente para realizar la autenticación. Cuando se realiza la autenticación mediante la ventana emergente de Microsoft Edge o IE (InPrivate), después de escribir las credenciales e iniciar sesión, si intervienen varios dominios de las zonas de seguridad en la navegación, la ventana emergente no se cierra porque MSAL.js pierde el identificador de esta.

  • No se puede iniciar sesión con la URL de redireccionamiento con el prefijo tauri. Los únicos esquemas admitidos para los URI de redireccionamiento son https: para aplicaciones de producción y http://localhost para el desarrollo local. Si intenta usar un esquema diferente, como tauri://localhost, para una aplicación móvil o de escritorio, aparece el siguiente mensaje de error. Este error se produce como resultado del diseño del back-end de la 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.

Actualización: Corrección disponible en MSAL.js 0.2.3

Las correcciones para los problemas del bucle de redireccionamiento de la autenticación se han publicado en MSAL.js 0.2.3. Habilite la marca storeAuthStateInCookie en la configuración de MSAL.js para usar esta solución. De manera predeterminada, esta marca se establece en "false".

Cuando la marca storeAuthStateInCookie está habilitada, MSAL.js usa las cookies del navegador para almacenar el estado de solicitud requerido para la validación de los flujos de autenticación.

Nota:

Esta corrección todavía no está disponible para los contenedores msal-angular y msal-angularjs. Esta corrección no soluciona el problema con las ventanas emergentes.

Otras soluciones

Asegúrese de que su problema solo se produce en la versión específica del explorador Microsoft Edge y de que funciona en los otros exploradores antes de adoptar estas soluciones alternativas.

  1. Como primer paso para solucionar estos problemas, asegúrese de que el dominio de la aplicación y cualquier otro sitio involucrado en las redirecciones del flujo de autenticación se agreguen como sitios de confianza en la configuración de seguridad del explorador. Se garantiza así que los redireccionamientos pertenecen a la misma zona de seguridad. Para hacerlo, siga estos pasos:

    • Abra Internet Explorer y haga clic en la configuración (icono con forma de engranaje) en la esquina superior derecha.
    • A continuación, seleccione Opciones de Internet.
    • Seleccione la pestaña Seguridad
    • En la opción Sitios de confianza, haga clic en el botón de sitios y agregue las direcciones URL en el cuadro de diálogo que se abrirá.
  2. Tal como se mencionó anteriormente, dado que solo se borra el almacenamiento de la sesión durante la navegación regular, puede configurar MSAL.js para que use el almacenamiento local en su lugar. Esto se puede establecer como el parámetro de configuración cacheLocation al inicializar MSAL.

Tenga en cuenta que estas acciones no solucionarán el problema de exploración de InPrivate, ya que tanto la sesión como el almacenamiento local están desactivados.

Problemas debidos a los bloqueadores de ventanas emergentes

Hay casos en que las ventanas emergentes se bloquean en IE o Microsoft Edge; por ejemplo, cuando aparece una segunda ventana emergente durante la autenticación multifactor. Recibirá una alerta en el explorador para permitir la ventana emergente una vez o siempre. Si elige permitirla, el explorador abre automáticamente la ventana emergente y se devuelve un identificador null. Como resultado, la biblioteca no tiene un controlador para la ventana y no hay forma de cerrarla. Este problema no ocurre en Chrome cuando le solicita que permita las ventanas emergentes, porque no abre automáticamente las ventanas emergentes.

Como solución, los desarrolladores deben permitir ventanas emergentes en IE y Microsoft Edge antes de comenzar a usar la aplicación para evitar este problema.

Pasos siguientes

Obtenga más información sobre el uso de MSAL.js en Internet Explorer.