Perguntas frequentes sobre o MSAL Node

Geral

Quando o MSAL Node é usado?

O Nó MSAL dá suporte à autenticação baseada em servidor para aplicativos públicos/confidenciais. Isso é mais aplicável para cenários de autenticação baseados em servidor/APIs Web que precisam de autenticação. Uma lista completa de cenários com suporte pode ser encontrada aqui e os fluxos com suporte estão listados aqui

Qual é o status do ADAL Node? Um guia de migração está disponível?

No momento, o ADAL Node está em manutenção, e recomendamos que todos os usuários migrem para o MSAL Node. O MSAL Node foi projetado para substituir completamente o ADAL Node. Para aqueles que querem migrar da ADAL para a MSAL, fornecemos um Documento de Migração para ajudar na migração. Observe que todos os aplicativos podem não ter uma migração suave, pois essa é uma revisão completa da funcionalidade antiga.

Quais são os serviços com suporte?

O MSAL Node oferece suporte a Microsoft Entra ID, MSA, ADFS e B2C. Nossos exemplos demonstram o uso aqui. O nó MSAL também dá suporte a aplicativos únicos e multilocatários.

Observação: no momento, o ADFS tem suporte, um exemplo autônomo ainda não foi publicado. Volte em breve para ver atualizações aqui.

O que é um aplicativo público ou um aplicativo confidencial? O que preciso saber durante o registro do aplicativo?

Encontre isso nas noções básicas da MSAL

Qual string de autoridade é usada por padrão se eu fornecer "authority" e "azureCloudOptions"?

Se o desenvolvedor fornecer azureCloudOptions, MSAL.js substituirá qualquer valor fornecido no authority. MSAL.js também dará preferência aos parâmetros fornecidos em um request em vez de configuration. Observe que, se azureCloudOptions estiverem definidos na configuração, eles terão precedência sobre authority na request. Se o desenvolvedor precisar substituir isso, ele precisará definir azureCloudOptions no request.

Quais serão os tempos de vida do token?

  • Microsoft Entra: localize a referência mais recente para Microsoft Entra aqui. Observe que poucos dos recursos configuráveis para tipos de token específicos foram desativados recentemente.
  • B2C: Consulte as diretrizes sobre o tempo de vida do token do B2C aqui

Como fazer para obter o Token de Atualização?

O MSAL Node não expõe tokens de atualização por motivos de segurança. Em vez disso, gerenciamos o refresh token no cache e o atualizamos conforme necessário para obter o token de ID correspondente e o token de acesso do desenvolvedor. Use a API apropriada acquireToken* para obter tokens de acesso e a MSAL garantirá que eles sejam renovados, se necessário. Se você tiver um token de atualização adquirido por outros meios, poderá usar a API acquireTokenByRefreshToken (consulte também: Exemplo de token de atualização). Mais detalhes sobre Microsoft Entra tokens podem ser encontrados aqui

O Electron tem suporte?

Sim. Consulte os exemplos do MSAL Node.

Há suporte para fluxo interativo?

Sim. MSAL Node fornece a API acquireTokenInteractive() em PublicClientApplication, que lida com ambas as etapas do fluxo de código de autorização. Ele abre uma janela do navegador para o usuário entrar e retorna um AuthenticationResult. Consulte a documentação sobre solicitações de aquisição de token para obter mais detalhes e o exemplo auth-code-cli-app para ver uma implementação.

As SPAs são suportadas pelo MSAL Node?

Consulte o MSAL Browser para casos de uso baseados em SPA. O MSAL Node deve ser uma opção para aplicativos da área de trabalho, aplicativos web, APIs web ou cenários de autenticação no lado do servidor.

O que são as extensões do MSAL Node? O que é um plug-in de cache?

MSAL Node Extensions é uma biblioteca de suporte para o MSAL Node que oferece mecanismos seguros para que aplicativos cliente realizem a serialização e a persistência multiplataforma do cache de tokens. Encontre o uso, os exemplos e muito mais sobre isso aqui

O plugin de cache fornecido pelo MSAL Node Extensions pode ser usado em aplicativos no Electron?

Sim, pode. Caso você encontre problemas relacionados à versão do Node, consulte esta nota com as etapas para solucionar problemas.

Quais versões de Node.js têm suporte? Como ignorar o erro de instalação se quiser usar uma versão de Node.js de desenvolvimento ativa?

O Nó MSAL dá suporte oficialmente a versões LTS estáveis numeradas, conforme documentado aqui.

Se você quiser contornar isso, observe:

  • Yarn: passe a flag --ignore-engines para o comando yarn.
  • npm: Adicione engine-strict=false ao arquivo .npmrc.

Importante

O MSAL Node v5 requer o Node.js 20 ou posterior. Node.js 16 e 18 não têm mais suporte.

Como implementar o cadastro de autoatendimento com o MSAL Node?

O MSAL Node dá suporte à autoinscrição no fluxo de código de autorização. Consulte nossa documentação aqui para ver os valores de prompt compatíveis na solicitação e os resultados esperados e aqui para obter uma visão geral da inscrição por autoatendimento e das alterações de configuração que precisam ser feitas no seu locatário do Azure. Observe que a inscrição por autoatendimento não está disponível em ambientes de teste e B2C.

Por que meu aplicativo não funciona corretamente quando está em execução atrás de um proxy?

A partir da versão 5 do MSAL Node, a configuração de proxy é feita por meio de um cliente HTTP personalizado. Implemente seu próprio cliente de rede instanciando um INetworkModule com suporte a proxy e forneça-o como networkClient em opções de configuração do sistema. Consulte o exemplo de INetworkModule personalizado para obter um exemplo.

Como implementar um agente http(s) personalizado no MSAL Node?

A partir do MSAL Node v5, o parâmetro customAgentOptions foi removido. Para usar um agente HTTP(S) personalizado, implemente seu próprio cliente de rede criando uma instância de um INetworkModule e configurando o agente dentro dele. Forneça o cliente de rede personalizado como o networkClient nas opções de configuração do sistema. Consulte o exemplo de INetworkModule personalizado para obter um exemplo.

B2C

Como posso lidar com o fluxo de usuário de redefinição de senha?

A nova experiência de redefinição de senha agora faz parte da política de inscrição ou entrada. Quando o usuário seleciona o linkesqueceu sua senha? ele é imediatamente enviado para a experiência de senha esquecida.

Nossa recomendação é adotar a nova experiência de redefinição de senha, pois isso simplifica o estado da aplicação e reduz a necessidade de tratamento de erros do lado do usuário. Se, por algum motivo, você precisar usar o fluxo de usuário herdado de redefinição de senha, será necessário lidar com o AADB2C90118 código de erro retornado do serviço B2C quando um usuário selecionar o link Esqueceu sua senha? Para ver como isso é feito, consulte o exemplo: exemplo de aplicativo Web msal node B2C (usando código de autenticação)

Compatibility

Posso usar o MSAL Node com o SDK JavaScript do Microsoft Graph?

Sim, o MSAL Node pode ser usado como um provedor de autenticação personalizado para o SDK JavaScript do Microsoft Graph. Para ver uma implementação, consulte o exemplo: Express Web App chamando a API do Graph.

Posso provisionar aplicativos msal node por meio da linha de comando?

Sim, recomendamos o novo SDK do PowerShell Graph para fazer isso. Por exemplo, o script abaixo cria um aplicativo do Microsoft Entra com um URI de redirecionamento personalizado do tipo Aplicativos móveis e de desktop (também conhecido como InstalledClient) e a permissão User.Read no Microsoft Graph em um locatário especificado pelo usuário e, em seguida, provisiona uma entidade de serviço no mesmo locatário com base nesse objeto de aplicativo:

Import-Module Microsoft.Graph.Applications

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Connect-MgGraph -TenantId "ENTER_TENANT_ID_HERE" -Scopes "Application.ReadWrite.All"

# User.Read delegated permission for Microsoft Graph
$mgUserReadScope = @{
    "Id" = "e1fe6dd8-ba31-4d61-89e7-88639da4683d" # permission Id
    "Type" = "Scope"
}

# Add additional permissions to array below
$mgResourceAccess = @($mgUserReadScope)

[object[]]$requiredResourceAccess = @{
    "ResourceAppId" = "00000003-0000-0000-c000-000000000000" # MS Graph App Id
    "ResourceAccess" = $mgResourceAccess
}

# Create the application
$msalApplication = New-MgApplication -displayName myMsalDesktopApp `
    -SignInAudience AzureADMyOrg `
    -PublicClient @{RedirectUris = "msal://redirect"} `
    -RequiredResourceAccess $requiredResourceAccess

# Provision the service principal
New-MgServicePrincipal -AppId $msalApplication.AppId