Bagikan melalui


Masalah yang diketahui pada browser Internet Explorer dan Microsoft Edge (MSAL.js)

Masalah karena zona keamanan

Kami memiliki beberapa laporan masalah dengan autentikasi di, yaitu, dan Microsoft Edge (sejak pembaruan versi browser Microsoft Edge ke 40.15063.0.0). Kami melacak ini dan telah memberi tahu tim Microsoft Edge. Meskipun Microsoft Edge bekerja pada resolusi, berikut adalah deskripsi masalah yang sering terjadi dan kemungkinan solusi yang dapat diimplementasikan.

Penyebab

Penyebab sebagian besar masalah ini adalah sebagai berikut. Penyimpanan sesi dan penyimpanan lokal dipartisi oleh zona keamanan di browser Microsoft Edge. Dalam versi Microsoft Edge ini, ketika aplikasi dialihkan ke seluruh zona, penyimpanan sesi dan penyimpanan lokal dibersihkan. Secara khusus, penyimpanan sesi dibersihkan dalam navigasi browser reguler, dan sesi serta penyimpanan lokal dibersihkan dalam mode InPrivate dari browser itu. MSAL.js menyimpan status tertentu dalam penyimpanan sesi dan bergantung pada pemeriksaan status ini selama alur autentikasi. Ketika penyimpanan sesi dibersihkan, kondisi ini hilang dan karenanya menghasilkan pengalaman yang rusak.

Terbitan

  • Loop pengalihan tak terbatas dan memuat ulang halaman selama autentikasi. Saat pengguna masuk ke aplikasi di Microsoft Edge, mereka dialihkan kembali dari halaman masuk Microsoft Entra dan terjebak dalam perulangan pengalihan tak terbatas yang menghasilkan muatan ulang halaman berulang. Ini biasanya disertai dengan invalid_state kesalahan dalam penyimpanan sesi.

  • Loop token akuisisi tak terbatas dan kesalahan AADSTS50058. Ketika aplikasi yang dijalankan di Microsoft Edge mencoba memperoleh token untuk sumber daya, aplikasi mungkin terjebak dalam perulangan tak terbatas dari panggilan token akuisisi. Kesalahan berikut dikembalikan dari ID Microsoft Entra di jejak jaringan Anda:

    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)

  • Jendela popup tidak menutup atau macet saat menggunakan login melalui jendela popup untuk mengautentikasi. Saat mengautentikasi melalui jendela pop-up di Microsoft Edge atau Internet Explorer (InPrivate), setelah memasukkan kredensial dan masuk, jika beberapa domain di seluruh zona keamanan terlibat dalam navigasi, jendela pop-up tidak ditutup karena MSAL.js kehilangan handel ke jendela pop-up.

  • Tidak dapat masuk menggunakan URL pengalihan yang diawali dengan tauri. Satu-satunya skema yang didukung untuk URI pengalihan adalah https: untuk aplikasi produksi dan http://localhost untuk pengembangan lokal. Jika Anda mencoba menggunakan skema yang berbeda, seperti tauri://localhost, untuk aplikasi seluler atau desktop, pesan kesalahan di bawah ini muncul. Kesalahan ini muncul sebagai akibat dari bagaimana backend SPA dirancang.

    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.

Pembaruan: Perbaikan tersedia di MSAL.js 0.2.3

Perbaikan untuk masalah loop pengalihan autentikasi telah dirilis di MSAL.js 0.2.3. Aktifkan bendera storeAuthStateInCookie di konfigurasi MSAL.js untuk memanfaatkan perbaikan ini. Secara default, bendera ini disetel ke false.

storeAuthStateInCookie Ketika bendera diaktifkan, MSAL.js menggunakan cookie browser untuk menyimpan status permintaan yang diperlukan untuk validasi alur autentikasi.

Catatan

Perbaikan ini belum tersedia untuk wrapper msal-angular dan msal-angularjs. Perbaikan ini tidak mengatasi masalah dengan jendela pop-up.

Solusi lain

Pastikan untuk menguji bahwa masalah Anda hanya terjadi pada versi tertentu browser Microsoft Edge dan berfungsi di browser lain sebelum mengadopsi solusi ini.

  1. Sebagai langkah pertama untuk mengatasi masalah ini, pastikan bahwa domain aplikasi dan situs lain yang terlibat dalam pengalihan alur autentikasi ditambahkan sebagai situs tepercaya dalam pengaturan keamanan browser. Ini memastikan pengalihan milik zona keamanan yang sama. Untuk melakukannya, ikuti langkah-langkah berikut:

    • Buka Internet Explorer dan klik pengaturan (ikon gerigi) di sudut kanan atas
    • Pilih Opsi Internet
    • Pilih tab Keamanan
    • Di bawah opsi Situs Tepercaya, klik tombol situs dan tambahkan URL dalam kotak dialog yang terbuka.
  2. Seperti disebutkan sebelumnya, karena hanya penyimpanan sesi yang dibersihkan selama navigasi reguler, Anda dapat mengonfigurasi MSAL.js menggunakan penyimpanan lokal sebagai gantinya. Ini dapat ditetapkan sebagai parameter konfigurasi cacheLocation saat menginisialisasi MSAL.

Perhatikan, solusi ini tidak akan menyelesaikan masalah untuk penjelajahan InPrivate karena penyimpanan sesi dan lokal dibersihkan.

Masalah karena pemblokir popup

Ada kasus ketika popup diblokir, yaitu, atau Microsoft Edge, misalnya ketika popup kedua terjadi selama autentikasi multifaktor. Anda akan mendapatkan pemberitahuan di browser untuk memungkinkan jendela pop-up sekali atau selalu. Jika Anda memilih untuk mengizinkannya, browser akan membuka jendela popup secara otomatis dan mengembalikan handel null untuknya. Akibatnya, pustaka tidak memiliki handel untuk jendela dan tidak ada cara untuk menutup jendela pop-up. Masalah yang sama tidak terjadi di Chrome saat meminta Anda untuk mengizinkan jendela pop-up karena tidak secara otomatis membuka jendela pop-up.

Sebagai solusinya, pengembang perlu mengizinkan popup masuk, yaitu, dan Microsoft Edge sebelum mereka mulai menggunakan aplikasi mereka untuk menghindari masalah ini.

Langkah berikutnya

Pelajari selengkapnya tentang Menggunakan MSAL.js di Internet Explorer.