Meningkatkan dari MSAL Angular v4 ke v5

MSAL Angular v5 memerlukan versi minimum Angular 19 dan menghilangkan dukungan untuk Angular 15, 16, 17, dan 18.

Silakan lihat panduan migrasi MSAL Browser v4 ke v5 untuk dukungan browser dan perubahan kunci lainnya di pustaka yang mendasar @azure/msal-browser .

Memutus perubahan dalam @azure/msal-angular@5

Pencocokan ketat untuk protectedResourceMap

Dalam msal-angular v5, pencocokan pola URL untuk protectedResourceMap entri menggunakan semantik pencocokan yang ketat secara default. Pencocokan yang ketat memperlakukan metakarakter pola sebagai harfiah, jangkar cocok dengan komponen URL lengkap, dan menerapkan aturan wildcard host yang tidak mencakup pemisah titik. Jika konfigurasi v4 Anda mengandalkan perilaku pencocokan yang lebih longgar, perbarui pola Anda protectedResourceMap agar selaras dengan pencocokan yang ketat, atau atur strictMatching ke false untuk mempertahankan perilaku warisan untuk sementara. Lihat dokumen MSAL Interceptor untuk detail selengkapnya.

Warning

Perubahan ini juga dapat memengaruhi pembaruan minor v5. Jika pencocokan ketat belum menjadi default pada versi minor v5 yang semula Anda gunakan (misalnya 5.0.x), memutakhirkan ke versi minor v5 yang lebih baru (misalnya 5.1.x) yang menjadikan pencocokan ketat sebagai default dapat tanpa disadari menyebabkan pelampiran token gagal. Gejala utamanya sama: error 401 — peringatan saat runtime sekarang ditampilkan ketika strictMatching tidak dikonfigurasi secara eksplisit, tetapi kegagalan pencocokan itu sendiri tetap tidak terlihat dan header Authorization tidak lagi disertakan.

Daftar periksa singkat

  1. Periksa protectedResourceMap kunci Anda. Kunci yang berupa URL dasar saja (misalnya https://api.example.com) tanpa karakter wildcard atau sub-jalur tidak akan lagi cocok dengan permintaan ke sub-jalur URL tersebut. Lihat pola kegagalan umum.
  2. Perbarui kunci agar menggunakan path yang tepat atau karakter wildcard. Setiap kunci harus sama persis dengan URL yang diminta oleh aplikasi Anda, atau menggunakan akhiran wildcard /* untuk mencocokkan subjalur. Lihat opsi perbaikan.
  3. Jika kunci Anda dimuat secara dinamis saat runtime, atur strictMatching: false sebagai default aman sementara. Lihat panduan untuk konfigurasi berbasis lingkungan.

Digerakkan oleh lingkungan protectedResourceMap

Jika kunci protectedResourceMap Anda berasal dari file Angular environment, APP_INITIALIZER, konfigurasi JSON, atau platformBrowserDynamic, tetapkan strictMatching: false sebagai nilai default yang aman selama migrasi:

export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {
  const protectedResourceMap = new Map<string, Array<string>>();
  protectedResourceMap.set(environment.apiConfig.uri, environment.apiConfig.scopes);

  return {
    interactionType: InteractionType.Redirect,
    protectedResourceMap,
    // TODO: Remove once protectedResourceMap keys are updated to use
    // exact paths or wildcard patterns (e.g. "https://api.example.com/*").
    strictMatching: false,
  };
}

Setelah semua kunci dimigrasikan ke jalur yang spesifik atau karakter pengganti, hapus strictMatching: false (atau setel ke true) agar dapat memanfaatkan perilaku pencocokan yang lebih ketat dan lebih aman. Lihat panduan untuk konfigurasi berbasis lingkungan untuk detail selengkapnya.

logout() dihapus

logout() telah dihapus. Gunakan logoutRedirect() atau logoutPopup() sebagai gantinya.

// BEFORE (v4)
this.authService.logout();

// AFTER (v5)
this.authService.logoutRedirect();
// or
this.authService.logoutPopup();

Perubahan lain dalam @azure/msal-angular@5

inject(TOKEN) sintaksis

MSAL_INSTANCE, MSAL_GUARD_CONFIG, MSAL_INTERCEPTOR_CONFIG, dan MSAL_BROADCAST_CONFIG sekarang diuraikan menjadi tipe, bukan string, untuk mendukung sintaksis inject(TOKEN). Perubahan ini dapat menyebabkan kesalahan TypeScript dalam aplikasi tanpa mengetik eksplisit.

handleRedirectObservable() Opsi

handleRedirectObservable() sekarang menerima objek opsional HandleRedirectPromiseOptions , yang mencakup navigateToLoginRequestUrl opsi yang dipindahkan dari konfigurasi di @azure/msal-browser@5. Lihat dokumentasi pengalihan untuk detail selengkapnya.

// BEFORE (msal-browser v4 configuration)
const msalConfig = {
  auth: {
    clientId: 'your-client-id',
    navigateToLoginRequestUrl: false // This option has moved
  }
};

// AFTER (msal-angular v5)
this.authService.handleRedirectObservable({
  navigateToLoginRequestUrl: false
}).subscribe();

Note

Meneruskan string hash langsung ke handleRedirectObservable(hash) tidak digunakan lagi. Gunakan objek opsi sebagai gantinya: handleRedirectObservable({ hash: "#..." }).

Sampel

Sampel pengembang berikut sekarang tersedia:

Lihat di sini untuk daftar sampel MSAL Angular saat ini dan fitur yang ditunjukkan.