Problemi noti dei browser Internet Explorer e Microsoft Edge (MSAL.js)

Problemi causati da aree di sicurezza

Sono stati rilevati più report di problemi con l'autenticazione in Internet Explorer, ovvero Microsoft Edge (dall'aggiornamento del browser Microsoft Edge alla versione 40.15063.0.0). Stiamo monitorando questi problemi e abbiamo informato il team Microsoft Edge. Sebbene Microsoft Edge lavori su una risoluzione, ecco una descrizione dei problemi che si verificano spesso e delle possibili soluzioni alternative che è possibile implementare.

Causa

La causa della maggior parte di questi problemi è la seguente. L'archiviazione della sessione e l'archiviazione locale vengono partizionate in base alle aree di sicurezza nel browser Microsoft Edge. In questa particolare versione di Microsoft Edge, quando l'applicazione viene reindirizzata tra le zone, l'archiviazione della sessione e l'archiviazione locale vengono cancellate. In particolare, l'archiviazione della sessione viene cancellata nella normale navigazione del browser e l'archiviazione della sessione e l'archiviazione locale vengono cancellate nella modalità InPrivate del browser. MSAL.js salva un determinato stato nell'archiviazione della sessione e si basa sul controllo di questo stato durante i flussi di autenticazione. Quando l'archiviazione della sessione viene deselezionata, questo stato viene perso e pertanto comporta l'interruzione delle esperienze.

Problemi

  • Cicli di reindirizzamento infinito e ricaricamenti di pagine durante l'autenticazione. Quando gli utenti accedono all'applicazione in Microsoft Edge, vengono reindirizzati dalla pagina di accesso di Microsoft Entra e sono bloccati in un ciclo di reindirizzamento infinito che comporta ripetuti ricaricamenti delle pagine. Questo è in genere accompagnato da un errore di invalid_state nell'archiviazione della sessione.

  • Cicli di acquisizione del token infiniti ed errore AADSTS50058. Quando un'applicazione in esecuzione su Microsoft Edge tenta di acquisire un token per una risorsa, l'applicazione può rimanere bloccata in un ciclo infinito della chiamata del token. Nel Network Trace di Microsoft Entra ID viene restituito l'errore seguente:

    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 finestra popup non si chiude o si blocca quando si usa l'accesso tramite la finestra popup per l'autenticazione. Quando si esegue l'autenticazione tramite la finestra popup in Microsoft Edge o Internet Explorer (InPrivate), dopo aver immesso le credenziali e aver eseguito l'accesso, se nello spostamento sono interessati più domini tra aree di sicurezza, la finestra popup non si chiude perché MSAL.js perde l'handle per la finestra popup.

  • Impossibile accedere usando l'URL di reindirizzamento preceduto da tauri. Gli unici schemi supportati per gli URI di reindirizzamento sono https: per le app di produzione e http://localhost per lo sviluppo locale. Se si tenta di usare uno schema diverso, ad esempio tauri://localhost, per un'applicazione per dispositivi mobili o desktop, viene visualizzato il messaggio di errore seguente. Questo errore si verifica in seguito alla progettazione del back-end dell'applicazione a pagina singola.

    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.

Aggiornamento: correzione disponibile in MSAL.js 0.2.3

Le correzioni per i problemi del ciclo di reindirizzamento dell'autenticazione sono state rilasciate in MSAL.js 0.2.3. Abilitare il flag storeAuthStateInCookie nella configurazione MSAL.js per sfruttare i vantaggi di questo aggiornamento. Per impostazione predefinita, questo flag è impostato su False.

Quando il flag storeAuthStateInCookie è abilitato, MSAL.js usa i cookie del browser per archiviare lo stato della richiesta necessario per la convalida dei flussi di autenticazione.

Nota

Questa correzione non è ancora disponibile per i wrapper msal-angular e msal-angularjs. Questa correzione non risolve il problema relativo alle finestre popup.

Altre soluzioni alternative

Verificare che il problema si verifichi solo nella versione specifica del browser Microsoft Edge e funzioni negli altri browser prima di adottare queste soluzioni alternative.

  1. Come primo passaggio per aggirare questi problemi, verificare che il dominio dell'applicazione e gli eventuali altri siti interessati nei reindirizzamenti del flusso di autenticazione vengano aggiunti come siti attendibili nelle impostazioni di sicurezza del browser. In questo modo i reindirizzamenti appartengono alla stessa zona di sicurezza. A tale scopo, effettuare i passaggi seguenti:

    • Aprire Internet Explorer e fare clic su Impostazioni (icona a forma di ingranaggio) nell'angolo superiore destro
    • Selezionare Opzioni Internet
    • Fare clic sulla scheda Sicurezza
    • Nell'opzione Siti attendibili fare clic sul pulsante Siti e aggiungere gli URL nella finestra di dialogo visualizzata.
  2. Come indicato in precedenza, poiché solo l'archiviazione della sessione viene cancellata durante la normale navigazione, è possibile configurare MSAL.js per usare invece l'archiviazione locale. Questa impostazione può essere impostata come parametro di configurazione cacheLocation durante l'inizializzazione di MSAL.

Si noti che queste soluzioni alternative non risolveranno il problema di InPrivate Browsing perché l'archiviazione della sessione e l'archiviazione locale vengono cancellate.

Problemi causati da blocchi popup

In alcuni casi, i popup vengono bloccati in Internet Explorer, ovvero in Microsoft Edge, ad esempio quando si verifica un secondo popup durante l'autenticazione a più fattori. Si riceverà un avviso nel browser per consentire la finestra popup una volta o sempre. Se si sceglie di dare il consenso, il browser apre automaticamente la finestra popup e restituisce un handle null. Di conseguenza la libreria non dispone di un handle per la finestra e non è possibile chiudere la finestra popup. Lo stesso problema non si verifica in Chrome quando viene richiesto di consentire finestre popup perché non viene automaticamente aperta una finestra popup.

Come soluzione, gli sviluppatori devono consentire i popup in Internet Explorer, ovvero Microsoft Edge, prima di iniziare a usare l'app per evitare questo problema.

Passaggi successivi

Altre informazioni su come Usare MSAL.js in Internet Explorer.