Aktualizacja z MSAL Angular v4 do v5

MSAL Angular v5 wymaga co najmniej Angulara 19 i przestaje obsługiwać Angulara 15, 16, 17 i 18.

Zapoznaj się z przewodnikiem migracji z MSAL Browser v4 do v5, aby uzyskać informacje o obsłudze przeglądarek i innych kluczowych zmianach w bazowej bibliotece @azure/msal-browser.

Zmiany powodujące niezgodność w @azure/msal-angular@5

Dokładne dopasowanie dla protectedResourceMap

W msal-angular v5 dopasowywanie wzorca adresu URL dla wpisów protectedResourceMap domyślnie używa semantyki ścisłego dopasowania. Ścisłe dopasowywanie traktuje metaznaki wzorca jako literały, ogranicza dopasowanie do całego składnika adresu URL i stosuje reguły wieloznaczników w nazwie hosta, które nie obejmują separatorów w postaci kropek. Jeśli konfiguracja v4 opierała się na mniej restrykcyjnym sposobie dopasowywania, zaktualizuj wzorce protectedResourceMap, aby były zgodne ze ścisłym dopasowaniem, lub ustaw strictMatching na false, aby tymczasowo zachować dotychczasowe działanie. Więcej informacji znajdziesz w dokumentacji MSAL Interceptor.

Warning

Ta zmiana może również mieć wpływ na drobne uaktualnienia w wersji 5. Jeśli ścisłe dopasowanie nie było jeszcze ustawieniem domyślnym w wersji pobocznej v5, której pierwotnie używano (np. 5.0.x), aktualizacja do nowszej wersji pobocznej v5 (np. 5.1.x), w której ścisłe dopasowanie jest ustawieniem domyślnym, może po cichu zakłócić dołączanie tokenu. Podstawowy objaw jest identyczny: błędy 401 — ostrzeżenie środowiska uruchomieniowego jest teraz emitowane, gdy strictMatching nie jest jawnie skonfigurowane, ale sam błąd dopasowania pozostaje cichy, a Authorization nagłówek nie jest już dołączony.

Szybka lista kontrolna

  1. Przejrzyj swoje protectedResourceMap klucze. Klucze, które są samymi bazowymi adresami URL (np. https://api.example.com), bez symboli wieloznacznych ani podścieżek, nie będą już pasować do żądań kierowanych do podścieżek tego adresu URL. Zobacz typowe wzorce błędów.
  2. Zaktualizuj klucze, aby używać dokładnych ścieżek lub symboli wieloznacznych. Każdy klucz powinien albo dokładnie odpowiadać adresowi URL żądanemu przez aplikację, albo używać sufiksu wieloznacznego /*, aby dopasowywać podścieżki. Zobacz opcje naprawy.
  3. Jeśli klucze są ładowane dynamicznie w czasie wykonywania, ustaw strictMatching: false jako tymczasową bezpieczną wartość domyślną. Zobacz wskazówki dotyczące konfiguracji opartych na środowisku.

Sterowane przez środowisko protectedResourceMap

protectedResourceMap Jeśli klucze pochodzą z plików Angularenvironment, APP_INITIALIZERkonfiguracji JSON lub platformBrowserDynamic, ustaw strictMatching: false jako bezpieczną wartość domyślną podczas migracji:

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,
  };
}

Po zmigrowaniu wszystkich kluczy do dokładnych ścieżek lub wzorców wieloznacznych usuń strictMatching: false (lub ustaw tę opcję na true), aby skorzystać z bardziej rygorystycznego i bezpieczniejszego mechanizmu dopasowywania. Aby uzyskać więcej informacji , zobacz wskazówki dotyczące konfiguracji opartych na środowisku .

logout() Usunięte

logout() został usunięty. Użyj polecenia logoutRedirect() lub logoutPopup() zamiast tego.

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

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

Inne zmiany w @azure/msal-angular@5

inject(TOKEN) składnia

MSAL_INSTANCE, MSAL_GUARD_CONFIG, MSAL_INTERCEPTOR_CONFIG i MSAL_BROADCAST_CONFIG są teraz interpretowane jako typy zamiast ciągów, aby obsługiwać składnię inject(TOKEN). Ta zmiana może spowodować błędy języka TypeScript w aplikacjach bez jawnego wpisywania.

handleRedirectObservable() Opcje

handleRedirectObservable() teraz akceptuje opcjonalny obiekt HandleRedirectPromiseOptions, który zawiera opcję navigateToLoginRequestUrl, która została przeniesiona z konfiguracji w @azure/msal-browser@5. Aby uzyskać więcej informacji, zobacz dokumentację przekierowań .

// 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

Bezpośrednie przekazywanie ciągu haszującego do handleRedirectObservable(hash) jest przestarzałe. Zamiast tego użyj obiektu options: handleRedirectObservable({ hash: "#..." }).

Przykłady

Dostępne są teraz następujące przykłady dla deweloperów:

Zobacz tutaj , aby zapoznać się z listą bieżących przykładów biblioteki MSAL Angular i przedstawionych funkcji.