Partilhar via


Como autenticar aplicativos JavaScript nos serviços do Azure usando a biblioteca de Identidades do Azure

Quando um aplicativo precisa acessar um recurso do Azure, como Armazenamento, Cofre de Chaves ou Serviços Cognitivos, o aplicativo deve ser autenticado no Azure. Isso é verdade para todos os aplicativos, sejam eles implantados no Azure, implantados no local ou em desenvolvimento em uma estação de trabalho de desenvolvedor local. Este artigo descreve as abordagens recomendadas para autenticar um aplicativo no Azure ao usar o SDK do Azure para JavaScript.

A abordagem recomendada é fazer com que seus aplicativos usem autenticação baseada em token, em vez de cadeias de conexão ou chaves, ao autenticar em recursos do Azure. A biblioteca de Identidade do Azure fornece autenticação baseada em token e permite que os aplicativos se autentiquem diretamente nos recursos do Azure, quer o aplicativo esteja em desenvolvimento local, implantado no Azure ou implantado em um servidor local.

O tipo específico de autenticação baseada em token que um aplicativo deve usar para autenticar nos recursos do Azure depende de onde o aplicativo está sendo executado e é mostrado no diagrama a seguir.

Meio Ambiente Autenticação
Local Quando um desenvolvedor está executando um aplicativo durante o desenvolvimento local - O aplicativo pode se autenticar no Azure usando uma entidade de serviço de aplicativo para desenvolvimento local ou usando as credenciais do Azure do desenvolvedor. Cada uma dessas opções é discutida com mais detalhes na seção autenticação durante o desenvolvimento local.
Azure Quando um aplicativo é hospedado no Azure - O aplicativo deve se autenticar nos recursos do Azure usando uma identidade gerenciada. Essa opção é discutida com mais detalhes abaixo na seção autenticação em ambientes de servidor.
Instalações locais Quando uma aplicação é hospedada e implantada localmente - A aplicação deve se autenticar nos recursos do Azure usando um principal de serviço da aplicação. Essa opção é discutida com mais detalhes abaixo na seção autenticação em ambientes de servidor.

Um diagrama mostrando as estratégias de autenticação baseadas em tokens recomendadas para um aplicativo, dependendo de onde ele está sendo executado.

Vantagens da autenticação baseada em tokens

Ao criar aplicativos para o Azure, é altamente recomendável usar a autenticação baseada em token em vez de segredos, como cadeias de conexão ou chaves. O DefaultAzureCredential oferece autenticação baseada em token.

Autenticação baseada em tokens Segredos (cadeias de conexão e chaves)
Princípio do menor privilégio, estabeleça as permissões específicas necessárias para o aplicativo no recurso do Azure. Uma cadeia de conexão ou chave concede direitos completos ao recurso do Azure.
Não há nenhum segredo de aplicativo para armazenar. Deve armazenar e rodar segredos nas configurações do aplicativo ou na variável de ambiente.
A biblioteca de Identidade do Azure gerencia tokens para você nos bastidores. Isso torna o uso da autenticação baseada em token tão fácil de usar quanto uma cadeia de conexão. Os segredos não são geridos.

O uso de cadeias de conexão deve ser limitado a aplicativos de prova de conceito iniciais ou protótipos de desenvolvimento que não acessam dados confidenciais ou de produção. Caso contrário, as classes de autenticação baseada em tokens disponíveis na biblioteca de Identidades do Azure devem sempre ser preferidas ao autenticar em recursos do Azure.

Use a seguinte biblioteca:

DefaultAzureCredential

A classe de DefaultAzureCredential fornecida pela biblioteca de Identidade do Azure permite que os aplicativos usem métodos de autenticação diferentes, dependendo do ambiente em que são executados. Esse comportamento permite que os aplicativos sejam promovidos do desenvolvimento local para ambientes de teste para produção sem alterações de código. Você configura o método de autenticação apropriado para cada ambiente e DefaultAzureCredential detetará e usará automaticamente esse método de autenticação. O uso de DefaultAzureCredential deve ser preferido sobre a codificação manual de lógica condicional ou sinalizadores de recursos para usar diferentes métodos de autenticação em ambientes diferentes.

Os detalhes sobre o uso do DefaultAzureCredential são abordados em Usar DefaultAzureCredential em um aplicativo.

Autenticação em ambientes de servidor

Ao hospedar em um ambiente de servidor, cada aplicativo deve receber uma identidade de aplicativo exclusiva por ambiente. No Azure, uma identidade de aplicativo é representada por uma entidade de serviço, um tipo especial de entidade de segurança destinada a identificar e autenticar aplicativos no Azure. O tipo de principal de serviço a utilizar para a sua aplicação depende de onde ela está a ser executada.

Autenticação durante o desenvolvimento local

Quando um aplicativo é executado na estação de trabalho de um desenvolvedor durante o desenvolvimento local, o ambiente local ainda deve se autenticar em todos os serviços do Azure usados pelo aplicativo.

Usar DefaultAzureCredential em um aplicativo

DefaultAzureCredential é uma sequência padronizada e ordenada de mecanismos para autenticação no Microsoft Entra ID. Cada mecanismo de autenticação é uma classe derivada da classe TokenCredential e é conhecido como uma credencial. Em tempo de execução, DefaultAzureCredential tenta autenticar usando a primeira credencial. Se essa credencial não conseguir adquirir um token de acesso, a próxima credencial na sequência será tentada, e assim por diante, até que um token de acesso seja obtido com êxito. Dessa forma, seu aplicativo pode usar credenciais diferentes em ambientes diferentes sem escrever código específico do ambiente.

Para usar DefaultAzureCredential, adicione o pacote @azure/identity ao seu aplicativo.

npm install @azure/identity

Em seguida, o exemplo de código a seguir mostra como instanciar um DefaultAzureCredential objeto e usá-lo com uma classe de cliente de serviço do SDK do Azure — neste caso, um BlobServiceClient usado para acessar o Armazenamento de Blob do Azure.

import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config';

const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  new DefaultAzureCredential()
);

DefaultAzureCredential detetará automaticamente o mecanismo de autenticação configurado para o aplicativo e obterá os tokens necessários para autenticar o aplicativo no Azure. Se um aplicativo fizer uso de mais de um cliente SDK, o mesmo objeto de credencial poderá ser usado com cada objeto cliente SDK.