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.
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
Etapa 3: consentimento do administrador
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
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:
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários