Partager via


Problèmes connus sur les navigateurs Internet Explorer et Microsoft Edge (MSAL.js)

Problèmes dus à des zones de sécurité

Nous avons reçu plusieurs rapports de problèmes d'authentification de Microsoft Edge (depuis la mise à jour de la version du navigateur Microsoft Edge vers 40.15063.0.0 ). Nous les suivons et avons informé l’équipe Microsoft Edge. Pendant que celle-ci travaille à les résoudre, voici une description des problèmes fréquents et des solutions de contournement possibles.

Cause

La cause de la plupart de ces problèmes est la suivante. Le stockage de session et le stockage local sont partitionnés par des zones de sécurité dans le navigateur Microsoft Edge. Dans cette version de Microsoft Edge, lorsque l’application est redirigée vers plusieurs zones, le stockage de session et le stockage local sont effacés. Plus précisément, le stockage de session est effacé dans la navigation normale, et tant le stockage de session et que le stockage local sont effacés dans le mode InPrivate du navigateur. MSAL.js enregistre certains états dans le stockage de session et s’appuie sur la vérification de cet état dans le cadre des flux d’authentification. Lorsque le stockage de session est effacé, cet état est perdu et entraîne des expériences interrompues.

Problèmes

  • Boucles de redirection infinies et rechargements de page lors de l’authentification. Lorsque des utilisateurs se connectent à l’application sur Microsoft Edge, ils sont redirigés à partir de la page de connexion Microsoft Entra et se retrouvent enfermés dans une boucle de redirection infinie entraînant des rechargements de page à répétition. Cela s’accompagne généralement d’une erreur invalid_state dans le stockage de session.

  • Boucles d’acquisition de jeton infinies et erreur AADSTS50058. Quand une application s’exécutant sur Microsoft Edge tente d’acquérir un jeton pour une ressource, elle peut se retrouver bloquée dans une boucle infinie d’appels pour l’acquisition de jeton. L’erreur suivante est retournée à partir de Microsoft Entra ID dans votre trace réseau :

    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 fenêtre contextuelle ne se ferme pas ou est bloquée lors de l’utilisation de la connexion via la fenêtre contextuelle pour l’authentification. Lors de l’authentification via une fenêtre contextuelle dans Microsoft Edge ou Internet Explorer (InPrivate), une fois la saisie des informations d’identification et la connexion effectuées, si plusieurs domaines dans les zones de sécurité sont impliqués dans la navigation, la fenêtre contextuelle ne se ferme pas parce que MSAL.js perd le descripteur de la fenêtre contextuelle.

  • Impossible de se connecter à l’aide de l’URL de redirection avec le préfixe tauri. Les seuls schémas pris en charge pour les URI de redirection sont https: pour les applications de production et http://localhost pour le développement local. Si vous tentez d’utiliser un autre schéma, comme tauri://localhost, pour une application mobile ou de bureau, le message d’erreur ci-dessous s’affiche. Cette erreur se produit en raison de la façon dont le back-end du SPA est conçu.

    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.

Mise à jour : Correctif disponible dans MSAL.js 0.2.3

Des correctifs pour les problèmes de boucle de redirection d’authentification ont été publiés dans MSAL.js 0.2.3. Activez l’indicateur storeAuthStateInCookie dans la configuration MSAL.js pour tirer parti de ce correctif. Par défaut, cet indicateur est défini sur false.

Lorsque l’indicateur storeAuthStateInCookie est activé, MSAL.js utilise les cookies du navigateur pour stocker l’état de demande requis pour la validation des flux d’autorisations.

Remarque

Ce correctif n’est pas encore disponible pour les wrappers msal-angular et msal-angularjs. Ce correctif ne règle pas le problème lié aux fenêtres contextuelles.

Autres solutions de contournement

Avant de mettre en œuvre ces solutions de contournement, testez pour vérifier que votre problème ne se produit que sur cette version du navigateur Microsoft Edge et fonctionne sur les autres navigateurs.

  1. En guise de première étape, pour résoudre ces problèmes, assurez-vous que le domaine d’application et tous les autres sites impliqués dans les redirections du flux d’authentification sont ajoutés en tant que sites de confiance dans les paramètres de sécurité du navigateur. Cela garantit que les redirections appartiennent à la même zone de sécurité. Pour ce faire, procédez comme suit :

    • Ouvrez Internet Explorer, puis cliquez sur Paramètres (icône d’engrenage) dans l’angle supérieur droit.
    • Sélectionnez Options Internet.
    • Sélectionnez l’onglet Sécurité.
    • Sous l’option Sites de confiance, cliquez sur le bouton Sites, puis ajoutez les URL dans la boîte de dialogue qui s’ouvre.
  2. Comme mentionné précédemment, étant donné que seul le stockage de session est effacé durant la navigation normale, vous pouvez configurer MSAL.js pour utiliser le stockage local à la place. Vous pouvez définir cela via le paramètre de configuration cacheLocation lors de l’initialisation de MSAL.

Notez que ces solutions de contournement ne résolvent pas le problème de navigation InPrivate, car tant le stockage de session que le stockage local sont effacés.

Problèmes dus à des bloqueurs de fenêtres contextuelles

Dans certains cas, les fenêtres contextuelles sont bloquées dans Microsoft Edge, par exemple lorsqu'une deuxième fenêtre contextuelle apparaît lors de l'authentification multifactorielle. Une alerte s’affiche dans le navigateur, qui vous permet de décider si la fenêtre contextuelle doit s’afficher une seule fois ou toujours. Si vous choisissez d’autoriser l’affichage de la fenêtre, le navigateur l’ouvre automatiquement et retourne un descripteur null approprié. Par conséquent, la bibliothèque ne contient pas de descripteur pour la fenêtre contextuelle, et il n’existe aucun moyen de fermer celle-ci. Ce problème ne se produit pas dans Chrome quand il vous invite à autoriser les fenêtres contextuelles, parce qu’il n’ouvre pas automatiquement de fenêtre contextuelle.

Pour éviter ce problème, les développeurs doivent autoriser les fenêtres contextuelles dans Microsoft Edge avant de commencer à utiliser leur application.

Étapes suivantes

Apprenez-en davantage sur l’utilisation de MSAL.js dans Internet Explorer.