Atualização do MSAL Angular v4 para v5

O MSAL Angular v5 requer uma versão mínima do Angular 19 e elimina o suporte para Angular 15, 16, 17 e 18.

Por favor, consulte o guia de migração do MSAL Browser v4 para v5 para suporte ao navegador e outras alterações importantes na biblioteca subjacente @azure/msal-browser .

Mudanças significativas na @azure/msal-angular@5

Correspondência exata para protectedResourceMap

No msal-angular v5, a correspondência de padrões de URL para as entradas protectedResourceMap utiliza, por defeito, semântica de correspondência estrita. A correspondência estrita trata os metacaracteres do padrão como literais, ancora a correspondência ao componente completo do URL e aplica regras de curinga do host que não atravessam separadores por ponto. Se a sua configuração v4 dependia de um comportamento de correspondência mais flexível, atualize os padrões protectedResourceMap para se alinharem com a correspondência estrita, ou defina strictMatching como false para manter temporariamente o comportamento legado. Consulte a documentação do MSAL Interceptor para mais detalhes.

Warning

Esta alteração também pode afetar melhorias menores da v5. Se a correspondência estrita ainda não era o padrão na versão menor v5 que adotaste originalmente (ex.: 5.0.x), atualizar para uma versão menor v5 posterior (ex.: 5.1.x), onde a correspondência estrita é a predefinição, pode quebrar silenciosamente a ligação ao token. O sintoma principal é idêntico: erros 401 — é agora emitido um aviso em tempo de execução quando strictMatching não estiver explicitamente configurado, mas a falha de correspondência em si permanece silenciosa e o cabeçalho Authorization deixa de ser anexado.

Lista de verificação rápida

  1. Revê as tuas protectedResourceMap chaves. Chaves que sejam apenas URLs base (por exemplo, https://api.example.com), sem curingas nem subcaminhos, deixarão de corresponder a pedidos para subcaminhos desse URL. Ver padrões comuns de falha.
  2. Atualize as chaves para usar caminhos exatos ou caracteres universais. Cada chave deve corresponder exatamente ao URL que a sua aplicação solicita, ou usar o sufixo curinga /* para corresponder aos subcaminhos. Veja as opções de correção.
  3. Se as suas chaves forem carregadas dinamicamente em tempo de execução, defina strictMatching: false como um valor predefinido seguro temporário. Consulte as orientações para configurações orientadas pelo ambiente.

Orientado pelo ambiente protectedResourceMap

Se as chaves protectedResourceMap vierem de ficheiros Angular environment, APP_INITIALIZER, configuração JSON ou platformBrowserDynamic, defina strictMatching: false como predefinição segura durante a migração:

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

Depois de todas as chaves serem migradas para caminhos exatos ou curingas, remova strictMatching: false (ou defina para true) para beneficiar do comportamento de correspondência mais rigoroso e seguro. Consulte as orientações para configurações orientadas pelo ambiente para mais detalhes.

logout() removido

logout() foi removido. Use logoutRedirect() ou logoutPopup() em vez disso.

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

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

Outras alterações em @azure/msal-angular@5

inject(TOKEN) sintaxe

MSAL_INSTANCE, MSAL_GUARD_CONFIG, MSAL_INTERCEPTOR_CONFIG e MSAL_BROADCAST_CONFIG passam agora a ser resolvidos como tipos em vez de cadeias de caracteres, para suportar a sintaxe inject(TOKEN). Esta alteração pode causar erros de TypeScript em aplicações sem tipagem explícita.

handleRedirectObservable() Opções

handleRedirectObservable() agora aceita um objeto opcional HandleRedirectPromiseOptions , que inclui a navigateToLoginRequestUrl opção que foi movida da configuração em @azure/msal-browser@5. Consulte a documentação dos redirecionamentos para mais detalhes.

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

Passar uma cadeia de hash diretamente para handleRedirectObservable(hash) está obsoleto. Use o objeto options em vez disso: handleRedirectObservable({ hash: "#..." }).

Samples

Os seguintes exemplos de programadores estão agora disponíveis:

Veja aqui uma lista das amostras atuais do MSAL Angular e das funcionalidades demonstradas.