Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O MSAL Angular v2 atualiza o nosso wrapper para Angular para a versão mais recente do MSAL common e inclui suporte imediato para versões modernas do Angular (9 - 12) e do RxJS (6).
Este guia irá demonstrar as alterações necessárias para migrar uma aplicação existente da @azure/msal-angular v1 para a v2.
Documentação específica para MSAL Angular v2 pode ser encontrada aqui.
Instalação
A primeira alteração fundamental no MSAL Angular v2 é que já não utiliza o pacote principal msal, mas encapsula o pacote @azure/msal-browser como uma dependência de mesmo nível.
Primeiro, desinstale quaisquer versões anteriores do MSAL atualmente em uso.
Para instalar @azure/msal-browser e @azure/msal-angular:
npm install @azure/msal-browser @azure/msal-angular@latest
Mudanças significativas na @azure/msal-browser@2
@azure/msal-browser@2 inclui várias alterações marcantes em relação msal@1.xa . Muitos destes devem ser abstraídos da sua aplicação, mas há alguns que exigem alterações no código.
O MsalModule.forRoot agora assume três argumentos
Anteriormente, @azure/msal-angular aceitava dois objetos de configuração via MsalModule.forRoot(), um para a biblioteca central e outro para @azure/msal-angular. Isto foi alterado para incluir uma instância de MSAL, bem como dois objetos de configuração específicos de Angular.
- O primeiro argumento é a instância MSAL. Isto pode ser fornecido como uma função de fábrica que instancia o MSAL, ou através da passagem da instância do MSAL juntamente com as configurações.
- O segundo argumento é um
MsalGuardConfigurationobjeto, que especifica ointeractionTypeassim como um opcionalauthRequeste um opcionalloginFailedRoute. - O terceiro argumento é um
MsalInterceptorConfigurationobjeto, que contém os valores parainteractionType, aprotectedResourceMap, e um opcionalauthRequest.unprotectedResourceMapfoi preterido.
Consulte o nosso documento de configuração e os documentos específicos para MsalInterceptor e MsalGuard para mais informações. Também pode consultar os nossos exemplos atualizados para exemplos de como passar estes objetos de configuração.
Logger
- O
loggeré agora definido através das configurações da instância MSAL, emsystem.loggerOptions, que incluem umloggerCallback,piiLoggingEnabledelogLevel, em vez de uma instância delogger. Ologgertambém pode ser definido dinamicamente usandoMsalService.setLogger(). Consulte ologger documentationpara mais informações e o exemplo de utilização.
Alterações da API
- Os
acquireTokenmétodos eloginagora tomam diferentes objetos de pedido como parâmetros. Consulte o msal.service.ts para mais detalhes. - Os eventos de transmissão agora emitem um objeto
EventMessage, em vez de apenas cadeias de caracteres. Veja o exemplo do Angular para um exemplo de como implementar. - As aplicações que utilizam métodos
Redirectdevem importar oMsalRedirectComponente o bootstrap, juntamente comAppComponent, no seu app.component.ts, para tratar todos os redirecionamentos. As aplicações não conseguem fazer isto devem implementar ohandleRedirectObservablemétodo (e fazê-lo correr em cada carregamento de página), o que irá capturar o resultado das operações de redirecionamento. Consulte a documentação de redirecionamento para mais detalhes.
Intercetador MSAL
- Por favor, consulte o nosso documento MsalInterceptor para mais detalhes sobre como configurar o atual
MsalInterceptor, e as diferenças entre v1 e v2.
Guarda MSAL
- Por favor, consulte o nosso documento do MsalGuard para mais detalhes sobre como configurar o atual
MsalGuard, e as diferenças entre v1 e v2.
Accounts
- Recomendamos que subscreva o
inProgress$observável e que filtre porInteractionStatus.Noneantes de obter informações da conta. Isto garante que todas as interações foram concluídas antes de obter a informação da conta. Veja o nosso exemplo para um exemplo desta utilização. - Ao obter contas, recomendamos utilizar
getAccountByHomeId()egetAccountByLocalId(), disponíveis na instância do MSAL.getAccount()é agoragetAccountByUsername(), mas deve ser uma opção secundária, pois pode ser menos fiável e é apenas por conveniência. -
getAllAccounts()está também disponível na instância MSAL. Consulte a documentação em@azure/msal-browserpara mais detalhes sobre os métodos da conta. - Além disso, agora pode obter e definir contagens ativas usando
getActiveAccount()esetActiveAccount(). Consulte o nosso FAQ para mais informações.
Angular 9+ e rxjs@6
O MSAL Angular agora espera que a sua aplicação seja construída com @angular/core@>=9, @angular/common@>=9, rxjs@6. Tal como no MSAL Angular v1, rxjs-compat não é obrigatório.
Passos:
- Instale versões mais recentes do Angular e do rxjs:
npm install @angular/core @angular/common rxjs - Desinstalar
rxjs-compat(assumindo que não é necessário para outras bibliotecas):npm uninstall rxjs-compat
Samples
Reunimos aplicações básicas de exemplo para Angular 9, 10, 11 e 12. Estes exemplos demonstram a configuração e utilização básicas, e serão melhorados e adicionados de forma incremental.
Veja aqui uma lista dos exemplos do MSAL Angular v2 e das funcionalidades demonstradas.