Partilhar via


Guia de início rápido: obtenha um token e chame a API do Microsoft Graph usando a identidade de um aplicativo de console

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:

Guia de início rápido: adquira um token e chame o Microsoft Graph em um aplicativo de console .NET

Pedimos desculpas pelo inconveniente e agradecemos a sua paciência enquanto trabalhamos para resolver este problema.

O início rápido a seguir usa um exemplo de código para demonstrar como um aplicativo de console .NET pode obter um token de acesso para chamar a API do Microsoft Graph e exibir uma lista de usuários no diretório. Ele também demonstra como um trabalho ou um serviço do Windows pode ser executado com uma identidade de aplicativo, em vez da identidade de um usuário. O aplicativo de console de exemplo neste início rápido também é um aplicativo daemon, portanto, é um aplicativo cliente confidencial.

Pré-requisitos

Um requisito mínimo do SDK do .NET 6.0.

Baixe e configure seu aplicativo de início rápido

Etapa 1: Configurar seu aplicativo no portal do Azure

Para que o exemplo de código neste início rápido funcione, crie um segredo de cliente e adicione a permissão de aplicativo User.Read.All da Graph API.

Já configurado Seu aplicativo está configurado com esses atributos.

Passo 2: Transfira o seu projeto do Visual Studio

Execute o projeto usando o Visual Studio 2022.

Gorjeta

Para evitar erros causados por limitações de comprimento de caminho no Windows, recomendamos extrair o arquivo ou clonar o repositório em um diretório perto da raiz da unidade.

Nota

Enter_the_Supported_Account_Info_Here

A execução do aplicativo agora resulta na saída HTTP 403 - Forbidden* error: "Insufficient privileges to complete the operation. Este erro ocorre porque qualquer permissão somente de aplicativo requer um administrador global do diretório para dar consentimento ao aplicativo. Selecione uma das seguintes opções, dependendo da função.

Administrador de locatário global

Para um administrador de locatário global, vá para a página Permissões da API e selecione Conceder consentimento de administrador para Enter_the_Tenant_Name_Here.

Usuário padrão

Para um usuário padrão do seu locatário, peça a um Administrador Global que conceda consentimento de administrador para o aplicativo. Para fazer isso, forneça a seguinte URL para o administrador:

https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here

O erro AADSTS50011: No reply address is registered for the application pode ser exibido depois que você concede consentimento para o aplicativo usando a URL anterior. Este erro ocorre porque o aplicativo e a URL não têm um URI de redirecionamento. Isto pode ser ignorado.

Etapa 4: Executar o aplicativo

No Visual Studio, pressione F5 para executar o aplicativo. Caso contrário, execute o aplicativo via prompt de comando, console ou terminal:

cd {ProjectFolder}\1-Call-MSGraph\daemon-console
dotnet run

Nesse código:

  • {ProjectFolder} é a pasta onde você extraiu o arquivo .zip. Um exemplo é C:\Azure-Samples\active-directory-dotnetcore-daemon-v2.

Uma lista de usuários no Microsoft Entra ID deve ser exibida como resultado.

Este aplicativo de início rápido usa um segredo do cliente para se identificar como um cliente confidencial. O segredo do cliente é adicionado como um arquivo de texto simples aos arquivos de projeto. Por motivos de segurança, é recomendável usar um certificado em vez de um segredo do cliente antes de considerar o aplicativo como um aplicativo de produção. Para obter mais informações sobre como usar um certificado, consulte estas instruções.

Mais informações

Esta seção fornece uma visão geral do código necessário para entrar usuários. Esta visão geral pode ser útil para entender como o > código funciona, quais são os principais argumentos e como adicionar entrada a um aplicativo de console .NET existente.

Como funciona a amostra

Diagrama que mostra como funciona o aplicativo de exemplo gerado por este início rápido.

Microsoft.Identity.Web.GraphServiceClient

Microsoft Identity Web (no pacote Microsoft.Identity.Web.TokenAcquisition ) é a biblioteca usada para solicitar tokens para acessar uma API protegida pela plataforma de identidade da Microsoft. Este guia de início rápido solicita tokens usando a própria identidade do aplicativo em vez de permissões delegadas. O fluxo de autenticação, nesse caso, é conhecido como um fluxo OAuth de credenciais de cliente. Para obter mais informações sobre como usar MSAL.NET com um fluxo de credenciais de cliente, consulte este artigo. Dado o aplicativo daemon neste guia de início rápido chamado Microsoft Graph, você instala o pacote Microsoft.Identity.Web.GraphServiceClient , que lida com solicitações autenticadas automaticamente para o Microsoft Graph (e faz referência a si mesmo Microsoft.Identity.Web.TokenAcquisition)

Microsoft.Identity.Web.GraphServiceClient pode ser instalado executando o seguinte comando no Console do Gerenciador de Pacotes do Visual Studio:

dotnet add package Microsoft.Identity.Web.GraphServiceClient

Inicialização de aplicações

Adicione a referência para Microsoft.Identity.Web adicionando o seguinte código:

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Graph;
using Microsoft.Identity.Abstractions;
using Microsoft.Identity.Web;

Em seguida, inicialize o aplicativo com o seguinte:

// Get the Token acquirer factory instance. By default it reads an appsettings.json
// file if it exists in the same folder as the app (make sure that the 
// "Copy to Output Directory" property of the appsettings.json file is "Copy if newer").
TokenAcquirerFactory tokenAcquirerFactory = TokenAcquirerFactory.GetDefaultInstance();

// Configure the application options to be read from the configuration
// and add the services you need (Graph, token cache)
IServiceCollection services = tokenAcquirerFactory.Services;
services.AddMicrosoftGraph();
// By default, you get an in-memory token cache.
// For more token cache serialization options, see https://aka.ms/msal-net-token-cache-serialization

// Resolve the dependency injection.
var serviceProvider = tokenAcquirerFactory.Build();

Este código usa a configuração definida no arquivo appsettings.json:

{
   "AzureAd": {
       "Instance": "https://login.microsoftonline.com/",
       "TenantId": "[Enter here the tenantID or domain name for your Azure AD tenant]",
       "ClientId": "[Enter here the ClientId for your application]",
       "ClientCredentials": [
           {
              "SourceType": "ClientSecret",
              "ClientSecret": "[Enter here a client secret for your application]"
           }
       ]
   }
}
Elemento Description
ClientSecret O segredo do cliente criado para o aplicativo no portal do Azure.
ClientId A ID do aplicativo (cliente) para o aplicativo registrado no portal do Azure. Esse valor pode ser encontrado na página Visão geral do aplicativo no portal do Azure.
Instance (Opcional) O serviço de token de segurança (STS) pode instância de ponto de extremidade para autenticação do aplicativo. Geralmente https://login.microsoftonline.com/ é para a nuvem pública.
TenantId Nome do inquilino ou ID do inquilino.

Para obter mais informações, consulte a documentação de referência do ConfidentialClientApplication.

Chamando o Microsoft Graph

Para solicitar um token usando a identidade do aplicativo, use o AcquireTokenForClient método:

GraphServiceClient graphServiceClient = serviceProvider.GetRequiredService<GraphServiceClient>();
var users = await graphServiceClient.Users
              .GetAsync(r => r.Options.WithAppOnly());

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 aplicativos daemon, consulte a visão geral do cenário: