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 protectedResourceMap entradas usa 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 para 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 em tempo de execução agora é emitido quando strictMatching não está explicitamente configurado, 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 ao URL solicitado 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.