Share via


Autenticar em recursos do Azure a partir de aplicativos JavaScript locais

Os aplicativos executados fora do Azure (por exemplo, no local ou em um data center de terceiros) devem usar uma entidade de serviço de aplicativo para autenticar no Azure ao acessar recursos do Azure. Os objetos principais do serviço de aplicativo são criados usando o processo de registro do aplicativo no Azure. Quando uma entidade de serviço de aplicativo é criada, uma ID do cliente e um segredo do cliente são gerados para seu aplicativo. Você armazena a ID do cliente, o segredo do cliente e a ID do locatário em variáveis de ambiente para que o SDK do Azure para JavaScript use as variáveis de ambiente para autenticar seu aplicativo no Azure em tempo de execução.

Um registro de aplicativo diferente deve ser criado para cada ambiente (como teste, estágio, produção) em que o aplicativo está sendo executado. Isso permite que permissões de recursos específicos do ambiente sejam configuradas para cada entidade de serviço e certifique-se de que um aplicativo implantado em um ambiente não converse com os recursos do Azure que fazem parte de outro ambiente.

1 - Registar a aplicação no Azure

Um aplicativo pode ser registrado no Azure usando o portal do Azure ou a CLI do Azure.

Entre no portal do Azure e siga estas etapas.

Instruções Captura de ecrã
No portal do Azure:
  1. Insira registros de aplicativos na barra de pesquisa na parte superior do portal do Azure.
  2. Selecione o item rotulado Registros de aplicativos sob o título Serviços no menu que aparece abaixo da barra de pesquisa.
A screenshot showing how to use the top search bar in the Azure portal to find and navigate to the App registrations page.
Na página Registos da aplicação, selecione + Novo registo. A screenshot showing the location of the New registration button in the App registrations page.
Na página Registar uma candidatura, preencha o formulário da seguinte forma.
  1. Nome → Insira um nome para o registro do aplicativo no Azure. Recomenda-se que esse nome inclua o nome do aplicativo e o ambiente (teste, prod) para o qual o registro do aplicativo se destina.
  2. Tipos de conta suportados → Contas somente neste diretório organizacional.
Selecione Registrar para registrar seu aplicativo e criar a entidade de serviço do aplicativo.
A screenshot to fill out Register by giving the app a name and specifying supported account types as accounts in this organizational directory only.
Na página Registo da aplicação para a sua aplicação:
  1. ID do aplicativo (cliente) → Esta é a ID do aplicativo que seu aplicativo usará para acessar o Azure durante o desenvolvimento local. Copie esse valor para um local temporário em um editor de texto, pois você precisará dele em uma etapa futura.
  2. ID do diretório (locatário) → Esse valor também será necessário para seu aplicativo quando ele se autenticar no Azure. Copie esse valor para um local temporário em um editor de texto, ele também será necessário em uma etapa futura.
  3. Credenciais do cliente → Você deve definir as credenciais do cliente para o aplicativo antes que seu aplicativo possa se autenticar no Azure e usar os serviços do Azure. Selecione Adicionar um certificado ou segredo para adicionar credenciais ao seu aplicativo.
A screenshot of the App registration after completion. This screenshot shows the application and tenant IDs, which will be needed in a future step.
Na página Certificados & segredos, selecione + Novo segredo do cliente. A screenshot showing the location of the link to use to create a new client secret on the certificates and secrets page.
A caixa de diálogo Adicionar um segredo do cliente aparecerá no lado direito da página. Nesta caixa de diálogo:
  1. Descrição → Insira um valor de Atual.
  2. Expira → Selecione um valor de 24 meses.
Selecione Adicionar para adicionar o segredo.

IMPORTANTE: Defina um lembrete no seu calendário antes da data de expiração do segredo. Dessa forma, você pode adicionar um novo segredo antes e atualizar seus aplicativos antes da expiração desse segredo e evitar uma interrupção do serviço em seu aplicativo.
A screenshot showing the page where a new client secret is added for the application service principal created by the app registration process.
A página Certificados & segredos mostra o valor do segredo do cliente.

Copie esse valor para um local temporário em um editor de texto porque você precisa dele em uma etapa futura.

IMPORTANTE: Esta é a única vez que você verá esse valor. Depois de sair ou atualizar esta página, você não poderá ver esse valor novamente. Você pode adicionar outro segredo do cliente sem invalidar esse segredo do cliente, mas não verá esse valor novamente.
A screenshot showing the page with the generated client secret.

2 - Atribuir funções à entidade de serviço do aplicativo

Em seguida, você precisa determinar quais funções (permissões) seu aplicativo precisa em quais recursos e atribuir essas funções ao seu aplicativo. As funções podem ser atribuídas a uma função em um recurso, grupo de recursos ou escopo de assinatura. Este exemplo mostrará como atribuir funções para a entidade de serviço no escopo do grupo de recursos, já que a maioria dos aplicativos agrupa todos os seus recursos do Azure em um único grupo de recursos.

Instruções Captura de ecrã
Localize o grupo de recursos para seu aplicativo pesquisando o nome do grupo de recursos usando a caixa de pesquisa na parte superior do portal do Azure.

Navegue até o grupo de recursos selecionando o nome do grupo de recursos sob o título Grupos de Recursos na caixa de diálogo.
A screenshot showing the top search box in the Azure portal to locate and navigate to the resource group you want to assign roles (permissions) to.
Na página do grupo de recursos, selecione Controle de acesso (IAM) no menu à esquerda. A screenshot of the resource group page showing the location of the Access control (IAM) menu item.
Na página Controle de acesso (IAM):
  1. Selecione o separador Atribuição de funções.
  2. Selecione + Adicionar no menu superior e, em seguida, Adicionar atribuição de função no menu suspenso resultante.
A screenshot showing how to navigate to the role assignments tab and the location of the button used to add role assignments to a resource group.
A página Adicionar atribuição de função lista todas as funções que podem ser atribuídas para o grupo de recursos.
  1. Use a caixa de pesquisa para filtrar a lista para um tamanho mais gerenciável. Este exemplo mostra como filtrar funções de Blob de Armazenamento.
  2. Selecione a função que pretende atribuir.
    Selecione Avançar para ir para a próxima tela.
A screenshot showing how to filter and select role assignments to be added to the resource group.
A próxima página Adicionar atribuição de função permite especificar a qual usuário atribuir a função.
  1. Selecione Usuário, grupo ou entidade de serviço em Atribuir acesso a.
  2. Selecione + Selecionar membros em Membros
Uma caixa de diálogo é aberta no lado direito do portal do Azure.
A screenshot showing the radio button to select to assign a role to a Microsoft Entra group and the link used to select the group to assign the role to.
Na caixa de diálogo Selecionar membros:
  1. A caixa de texto Selecionar pode ser usada para filtrar a lista de usuários e grupos em sua assinatura. Se necessário, digite os primeiros caracteres da entidade de serviço que você criou para o aplicativo filtrar a lista.
  2. Selecione a entidade de serviço associada ao seu aplicativo.
Selecione Selecionar na parte inferior da caixa de diálogo para continuar.
A screenshot showing how to filter for and select the Microsoft Entra group for the application in the Select members dialog box.
A entidade de serviço é mostrada como selecionada na tela Adicionar atribuição de função.

Selecione Rever + atribuir para ir para a página final e, em seguida, Rever + atribuir novamente para concluir o processo.
A screenshot showing the completed Add role assignment page and the location of the Review + assign button used to complete the process.

3 - Configurar variáveis de ambiente para aplicação

Você deve definir as AZURE_CLIENT_IDvariáveis , AZURE_TENANT_IDe de AZURE_CLIENT_SECRET ambiente para o processo que executa seu aplicativo JavaScript para disponibilizar as credenciais da entidade de serviço do aplicativo para seu aplicativo em tempo de execução. O DefaultAzureCredential objeto procura as informações da entidade de serviço nessas variáveis de ambiente.

AZURE_CLIENT_ID=<value>
AZURE_TENANT_ID=<value>
AZURE_CLIENT_SECRET=<value>

4 - Implementar DefaultAzureCredential no aplicativo

Para autenticar objetos de cliente do SDK do Azure no Azure, seu aplicativo deve usar a DefaultAzureCredential classe do pacote @azure/identity .

Primeiro, adicione o pacote @azure/identity ao seu aplicativo.

npm install @azure/identity

Em seguida, para qualquer código JavaScript que crie um objeto de cliente do SDK do Azure em seu aplicativo, você deseja:

  1. Importe a DefaultAzureCredential classe do @azure/identity módulo.
  2. Crie um DefaultAzureCredential objeto.
  3. Passe o DefaultAzureCredential objeto para o construtor de objeto de cliente do SDK do Azure.

Um exemplo disso é mostrado no segmento de código a seguir.

// connect-with-default-azure-credential.js
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()
);

Quando o código acima instancia o DefaultAzureCredential objeto, DefaultAzureCredential lê as variáveis AZURE_SUBSCRIPTION_IDde ambiente , , AZURE_CLIENT_IDAZURE_TENANT_IDe AZURE_CLIENT_SECRET para as informações da entidade de serviço de aplicativo com as quais se conectar ao Azure.