Guia de início rápido: adquira um token e chame a API do Microsoft Graph de um aplicativo de console do Node.js usando a identidade do aplicativo
Boas-vindas! Esta provavelmente não é a página que você estava esperando. Enquanto trabalhamos em uma correção, este link deve levá-lo ao artigo certo:
Pedimos desculpas pelo inconveniente e agradecemos a sua paciência enquanto trabalhamos para resolver este problema.
Neste início rápido, você baixa e executa um exemplo de código que demonstra como um aplicativo de console Node.js pode obter um token de acesso usando a identidade do aplicativo para chamar a API do Microsoft Graph e exibir uma lista de usuários no diretório. O exemplo de código demonstra como um trabalho autônomo ou serviço do Windows pode ser executado com uma identidade de aplicativo, em vez da identidade de um usuário.
Este guia de início rápido usa a Biblioteca de Autenticação da Microsoft para Node.js (Nó MSAL) com a concessão de credenciais do cliente.
Pré-requisitos
- Node.js
- Visual Studio Code ou outro editor de código
Baixar e configurar o aplicativo de exemplo
Etapa 1: Configurar o aplicativo no portal do Azure
Para que o exemplo de código para este início rápido funcione, você precisa criar um segredo do cliente e adicionar a permissão de aplicativo User.Read.All da Graph API.
Seu aplicativo está configurado com esses atributos.
Etapa 2: Baixe o projeto de exemplo Node.js
Nota
Enter_the_Supported_Account_Info_Here
Etapa 3: consentimento do administrador
Se você tentar executar o aplicativo neste ponto, você receberá HTTP 403 - Erro proibido : Insufficient privileges to complete the operation
. Este erro acontece porque qualquer permissão somente para aplicativos requer o consentimento do administrador: um administrador do seu diretório deve dar consentimento ao seu aplicativo. Selecione uma das opções abaixo, dependendo da sua função:
Administrador de inquilinos
Se você for um administrador, vá para a página Permissões da API, selecione Conceder consentimento de administrador para > Enter_the_Tenant_Name_Here
Usuário padrão
Se você for um usuário padrão do seu locatário, precisará pedir a pelo menos um administrador de aplicativos na nuvem para conceder consentimento de administrador para seu aplicativo. Para fazer isso, forneça a seguinte URL ao administrador:
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
Etapa 4: Executar o aplicativo
Localize a pasta raiz do exemplo (onde package.json
reside) em um prompt de comando ou console. Você precisará instalar as dependências deste exemplo uma vez:
npm install
Em seguida, execute o aplicativo via prompt de comando ou console:
node . --op getUsers
Você deve ver na saída do console algum fragmento JSON representando uma lista de usuários no diretório do Microsoft Entra.
Sobre o código
Abaixo, alguns dos aspetos importantes da aplicação de exemplo são discutidos.
Nó MSAL
MSAL Node é a biblioteca usada para entrar usuários e solicitar tokens usados para acessar uma API protegida pela plataforma de identidade da Microsoft. Conforme descrito, esse início rápido solicita tokens por permissões de aplicativo (usando a própria identidade do aplicativo) em vez de permissões delegadas. O fluxo de autenticação usado neste caso é conhecido como fluxo de credenciais de cliente OAuth 2.0. Para obter mais informações sobre como usar o MSAL Node com aplicativos daemon, consulte Cenário: aplicativo Daemon.
Você pode instalar o MSAL Node executando o seguinte comando npm.
npm install @azure/msal-node --save
Inicialização da MSAL
Pode adicionar a referência para MSAL, adicionando o código seguinte:
const msal = require('@azure/msal-node');
Em seguida, inicialize a MSAL com o código seguinte:
const msalConfig = {
auth: {
clientId: "Enter_the_Application_Id_Here",
authority: "https://login.microsoftonline.com/Enter_the_Tenant_Id_Here",
clientSecret: "Enter_the_Client_Secret_Here",
}
};
const cca = new msal.ConfidentialClientApplication(msalConfig);
Em que: Description clientId
É o ID de Aplicação (cliente) da aplicação registada no portal do Azure. Pode encontrar este valor na página Descrição geral da aplicação no portal do Azure. authority
O ponto final STS para o utilizador autenticar. Normalmente https://login.microsoftonline.com/{tenant}
para nuvem pública, onde {tenant} é o nome do seu inquilino ou do seu ID de inquilino.clientSecret
É o segredo do cliente criado para o aplicativo no portal do Azure.
Para obter mais informações, consulte a documentação de referência para ConfidentialClientApplication
Solicitar tokens
Para solicitar um token usando a identidade do aplicativo, use acquireTokenByClientCredential
o método:
const tokenRequest = {
scopes: [ 'https://graph.microsoft.com/.default' ],
};
const tokenResponse = await cca.acquireTokenByClientCredential(tokenRequest);
Em que: Description tokenRequest
Contém os escopos solicitados. Para clientes confidenciais, isso deve usar o formato semelhante para {Application ID URI}/.default
indicar que os escopos que estão sendo solicitados são os definidos estaticamente no objeto de aplicativo definido no portal do Azure (para o Microsoft Graph,{Application ID URI}
aponta parahttps://graph.microsoft.com
). Para APIs Web personalizadas,{Application ID URI}
é definido na seção Expor uma API no Registro de Aplicativo do portal do Azure.tokenResponse
A resposta contém um token de acesso para os escopos solicitados.
Ajuda e suporte
Se precisar de ajuda, quiser comunicar um problema ou quiser saber mais sobre as suas opções de suporte, consulte Ajuda e suporte para programadores.
Próximos passos
Para saber mais sobre o desenvolvimento de aplicativos daemon/console com o MSAL Node, consulte o tutorial: