Atualizar do MSAL Angular v4 para v5

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

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

Alterações interruptivas em @azure/msal-angular@5

Correspondência estrita para protectedResourceMap

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

Warning

Essa alteração também pode afetar atualizações secundárias v5. Se a correspondência estrita ainda não era o padrão na versão menor da v5 que você adotou originalmente (por exemplo, 5.0.x), a atualização para uma versão menor posterior da v5 (por exemplo, 5.1.x), em que a correspondência estrita é o padrão, pode quebrar silenciosamente a associação do token. O sintoma primário é idêntico: erros 401 — um aviso no runtime agora é emitido quando strictMatching não está explicitamente configurada, mas a falha de correspondência em si permanece silenciosa e o cabeçalho Authorization não é mais anexado.

Lista de verificação rápida

  1. Examine suas protectedResourceMap chaves. As chaves que são URLs base simples (por exemplo, https://api.example.com), sem curingas nem subcaminhos, não corresponderão mais a solicitações para subcaminhos dessa URL. Veja padrões comuns de falha.
  2. Atualize as chaves para usar caminhos exatos ou curingas. Cada chave deve corresponder exatamente à URL solicitada pelo seu aplicativo ou usar o sufixo curinga /* para corresponder a subcaminhos. Consulte as opções de correção.
  3. Se suas chaves forem carregadas dinamicamente em tempo de execução, defina strictMatching: false como um valor temporário seguro. Consulte as diretrizes para configurações controladas pelo ambiente.

Orientado pelo ambiente protectedResourceMap

Se suas protectedResourceMap chaves forem provenientes de arquivos Angular environment , APP_INITIALIZERconfiguração JSON ou platformBrowserDynamic, defina strictMatching: false como um padrão seguro 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 que todas as chaves forem migradas para caminhos exatos ou curingas, remova strictMatching: false (ou defina-a como true) para aproveitar um comportamento de correspondência mais rigoroso e seguro. Consulte as diretrizes para configurações controladas pelo ambiente para obter mais detalhes.

logout() removido

logout() foi removido. Em vez disso, use logoutRedirect() ou logoutPopup().

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

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

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

Sintaxe de inject(TOKEN)

MSAL_INSTANCE, MSAL_GUARD_CONFIG, MSAL_INTERCEPTOR_CONFIG e MSAL_BROADCAST_CONFIG agora são resolvidos como tipos em vez de strings para dar suporte à sintaxe inject(TOKEN). Essa alteração pode causar erros de TypeScript em aplicativos sem digitação explícita.

handleRedirectObservable() opções

handleRedirectObservable() agora aceita um objeto opcional HandleRedirectPromiseOptions , que inclui a opção navigateToLoginRequestUrl que foi movida da configuração em @azure/msal-browser@5. Consulte a documentação de redirecionamentos para obter 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 string de hash diretamente para handleRedirectObservable(hash) está obsoleto. Em vez disso, use o objeto options: handleRedirectObservable({ hash: "#..." }).

Exemplos

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

Veja aqui uma lista dos exemplos atuais do MSAL Angular e os recursos demonstrados.