Upgrade z MSAL Angular v4 na v5

MSAL Angular v5 vyžaduje minimálně Angular 19 a ukončuje podporu pro Angular 15, 16, 17 a 18.

Informace o podpoře prohlížeče a dalších klíčových změnách v podkladové knihovně najdete v @azure/msal-browser.

Zásadní změny v @azure/msal-angular@5

Přesná shoda pro protectedResourceMap

V msal-angular v5 používá porovnávání vzorů adres URL pro položky protectedResourceMap ve výchozím nastavení striktní sémantiku porovnávání. Přísná shoda považuje metaznaky vzoru za literály, ukotvuje shody na celou komponentu URL a používá pravidla pro zástupné znaky v hostiteli, která nepřekračují oddělovače teček. Pokud vaše konfigurace v4 spoléhala na volnější způsob porovnávání, aktualizujte vzory protectedResourceMap, aby odpovídaly striktnímu porovnávání, nebo nastavte strictMatching na false, aby se dočasně zachovalo starší chování. Podrobnosti naleznete v dokumentaci k interceptoru MSAL.

Warning

Tato změna může mít vliv také na dílčí upgrady verze 5. Pokud přísné párování ještě nebylo výchozí v dílčí verzi v5, kterou jste původně nasadili (např. 5.0.x), upgrade na novější dílčí verzi v5 (např. 5.1.x), ve které je přísné párování výchozí, může bez zjevného upozornění narušit připojení tokenu. Primární příznak je stejný: chyby 401 — nyní je vyvoláno varování za běhu, když strictMatching není explicitně nakonfigurováno, ale samotná neúspěšná shoda zůstává tichá a hlavička Authorization se již nepřipojuje.

Rychlý kontrolní seznam

  1. Zkontrolujte své protectedResourceMap klíče. Klíče, které jsou samotnými základními adresami URL (např. https://api.example.com) bez zástupných znaků nebo podcest, už nebudou odpovídat požadavkům na podcesty této adresy URL. Podívejte se na běžné vzory selhání.
  2. Aktualizujte klíče tak, aby používaly buď přesné cesty, nebo zástupné znaky. Každý klíč by měl buď odpovídat přesné adrese URL, kterou vaše aplikace požaduje, nebo používat příponu se zástupným znakem /*, aby odpovídal podcestám. Viz možnosti opravy.
  3. Pokud se klíče načítají dynamicky za běhu, nastavte strictMatching: false jako dočasnou bezpečnou výchozí hodnotu. Přečtěte si pokyny pro konfigurace řízené prostředím.

Závislé na prostředí protectedResourceMap

Pokud klíče protectedResourceMap pocházejí ze souborů Angular environment, APP_INITIALIZER, konfigurace JSON nebo platformBrowserDynamic, nastavte během migrace strictMatching: false jako bezpečnou výchozí hodnotu:

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

Jakmile budou všechny klíče migrovány na přesné cesty nebo zástupné znaky, odeberte strictMatching: false (nebo ji nastavte na true), abyste mohli využít přísnější a bezpečnější chování při porovnávání. Další podrobnosti najdete v doprovodných materiálech k konfiguracím řízeným prostředím .

logout() odstraněný

logout() bylo odstraněno. Použijte logoutRedirect() nebo logoutPopup() místo toho.

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

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

Další změny v @azure/msal-angular@5

Syntaxe inject(TOKEN)

MSAL_INSTANCE, MSAL_GUARD_CONFIG, MSAL_INTERCEPTOR_CONFIG a MSAL_BROADCAST_CONFIG se nyní vyhodnocují na typy místo řetězců, aby podporovaly syntaxi inject(TOKEN). Tato změna může způsobit chyby TypeScriptu v aplikacích bez explicitního psaní.

handleRedirectObservable() možnosti

handleRedirectObservable() nyní přijímá volitelný HandleRedirectPromiseOptions objekt, který zahrnuje navigateToLoginRequestUrl možnost přesunutou z konfigurace v @azure/msal-browser@5. Další podrobnosti najdete v dokumentaci k přesměrování .

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

Přímé předávání řetězce hashe do handleRedirectObservable(hash) je zastaralé. Místo toho použijte objekt možností: handleRedirectObservable({ hash: "#..." }).

Ukázky

Nyní jsou k dispozici následující ukázky pro vývojáře:

Seznam aktuálních ukázek MSAL Angular a předváděných funkcí najdete zde.