Perguntas frequentes sobre MSAL Node

Geral

Quando é utilizado o MSAL Node?

O MSAL Node suporta autenticação baseada em servidor para aplicações públicas/confidenciais. Isto é mais aplicável a cenários de autenticação baseados em servidor/APIs Web que necessitam de autenticação. Uma lista completa de cenários suportados pode ser encontrada aqui e os fluxos suportados estão listados aqui

Qual é o status do ADAL Node? Existe um guia de migração disponível?

O Nó ADAL está atualmente em manutenção e aconselhamos todos os utilizadores a mudarem para o Nó MSAL. O MSAL Node foi concebido para substituir por completo o ADAL Node. Para quem pretende migrar de ADAL para MSAL, disponibilizámos um Documento de Migração para ajudar na migração. Por favor, note que todas as aplicações podem não ter uma migração suave, pois isto representa uma reformulação completa da funcionalidade antiga.

Quais são os serviços suportados?

MSAL Node suporta Microsoft Entra ID, MSA, ADFS e B2C. Os nossos exemplos demonstram a utilização aqui. MSAL Node também suporta aplicações de um único locatário e de múltiplos locatários.

Nota: O ADFS é atualmente suportado, ainda não foi publicado um exemplo independente. Volte a consultar este espaço em breve para atualizações.

O que é uma Aplicação Pública ou uma Aplicação Confidencial? O que preciso de saber durante o registo da candidatura?

Pode consultar isto em Noções básicas do MSAL

Qual é a cadeia de autoridade predefinida se eu indicar "authority" e "azureCloudOptions"?

Se o programador fornecer azureCloudOptions, MSAL.js substituirá qualquer valor fornecido no authority. MSAL.js também dará preferência aos parâmetros fornecidos em um request sobre configuration. Tenha em atenção que, se azureCloudOptions estiver definido na configuração, terá precedência sobre authority em request. Se o programador precisar de sobrescrever isto, tem de definir azureCloudOptions em .request

Quais serão os tempos de vida dos tokens?

  • Microsoft Entra: Por favor, encontre aqui a referência mais recente sobre Microsoft Entra. Note que algumas das funcionalidades configuráveis para tipos específicos de tokens foram recentemente retiradas.
  • B2C: Consulte aqui as orientações sobre o tempo de vida do token B2C

Como é que obtenho o Token de Atualização?

MSAL Node não expõe tokens de atualização por razões de segurança. Em vez disso, gerimos o token de atualização através da cache e atualizamo-lo conforme necessário para obter o correspondente Id Token e Access Token para o programador. Use a API adequada acquireToken* para obter os tokens de acesso, e a MSAL garantirá que sejam renovados se necessário. Se tiver um token de atualização adquirido por outros meios, pode usar a API acquireTokenByRefreshToken (ver também: Amostra do Token de Atualização). Mais detalhes sobre os tokens Microsoft Entra podem ser encontrados aqui

O Electron é suportado?

Yes. Por favor, consulte exemplos de MSAL Node.

O fluxo interativo é suportado?

Yes. O MSAL Node fornece a API acquireTokenInteractive() em PublicClientApplication, que trata ambas as partes do fluxo do código de autorização. Abre uma janela do navegador para o utilizador iniciar sessão e devolve um AuthenticationResult. Consulte a documentação sobre pedidos de obtenção de token para mais detalhes e o exemplo auth-code-cli-app para ver um exemplo de implementação.

Os SPAs são suportados pelo MSAL Node?

Por favor, consulte o MSAL Browser para casos de uso baseados em SPA. MSAL Node deve ser uma escolha para aplicações de ambiente de trabalho, aplicações web, APIs web ou cenários de autenticação do lado do servidor.

O que são extensões MSAL Node? O que é um Plugin de Cache?

As extensões do MSAL Node são uma biblioteca de suporte para o MSAL Node que oferece mecanismos seguros para aplicações cliente efetuarem a serialização e a persistência multiplataforma da cache de tokens. Por favor, encontre aqui a utilização, exemplos e mais sobre isto

O plugin de cache fornecido nas extensões MSAL Node pode ser usado em aplicações Electron?

Sim, pode. Caso tenha problemas relacionados com a versão do Node, consulte esta nota que fornece os passos para resolver o problema.

Que versões de Node.js são suportadas? Como posso contornar o erro de instalação se quiser usar uma versão ativa de desenvolvimento Node.js?

MSAL Node suporta oficialmente versões LTS estáveis com número par, conforme documentado aqui.

Se quiseres contornar isto, por favor nota:

  • Yarn: Passe a opção --ignore-engines ao comando yarn.
  • npm: Adiciona engine-strict=false ao teu ficheiro .npmrc.

Importante

O MSAL Node v5 exige Node.js 20 ou superior. Node.js 16 e 18 já não são suportadas.

Como implemento o registo em modo de autoatendimento no MSAL Node?

O MSAL Node suporta o registo em self-service no fluxo do código de autorização. Consulte a nossa documentação aqui para conhecer os valores de prompt suportados na solicitação e os resultados esperados correspondentes, e aqui para uma visão geral da autoinscrição e das alterações de configuração que têm de ser efetuadas no seu tenant do Azure. Tenha em atenção que o registo de autoatendimento não está disponível em ambientes B2C e de teste.

Porque é que a minha aplicação não funciona corretamente quando está a correr atrás de um proxy?

A partir do MSAL Node v5, a configuração do proxy é gerida através de um cliente HTTP personalizado. Implemente o seu próprio cliente de rede instanciando um INetworkModule com suporte a proxy e forneça-o como networkClientopções de configuração no sistema. Veja o exemplo personalizado do INetworkModule para um exemplo.

Como é que implemento um agente http(s) personalizado no MSAL Node?

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

B2C

Como devo gerir o fluxo de utilizador para redefinição da palavra-passe?

A nova experiência de redefinição de palavra-passe faz agora parte da política de registo ou início de sessão. Quando o utilizador seleciona a ligação Esqueceu-se da palavra-passe?, é imediatamente enviado para a experiência de Palavra-passe Esquecida.

A nossa recomendação é adotar a nova experiência de redefinição de palavra-passe, pois simplifica o estado da aplicação e reduz o tratamento de erros do lado do utilizador. Se por algum motivo tiver de usar o fluxo de utilizador de redefinição de palavra-passe antigo, terá de lidar com o AADB2C90118 código de erro devolvido do serviço B2C quando um utilizador seleciona o link Esqueceu a sua palavra-passe? Para ver como isto é feito, consulte o exemplo: MSAL Node B2C web app (usando código de autenticação)

Compatibility

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

Sim, o MSAL Node pode ser usado como fornecedor de autenticação personalizada para o Microsoft Graph JavaScript SDK. Para uma implementação, consulte o exemplo: Express Web App calling Graph API.

Posso provisionar aplicações MSAL Node via linha de comandos?

Sim, recomendamos o novo Powershell Graph SDK para isso. Por exemplo, o script abaixo cria uma aplicação Microsoft Entra com um URI de redirecionamento personalizado do tipo Aplicações móveis e de ambiente de trabalho (também conhecido por InstalledClient) e a permissão User.Read para o Microsoft Graph num inquilino especificado pelo utilizador, e depois aprovisiona um principal de serviço no mesmo inquilino com base neste objeto de aplicação:

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