Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste artigo, vai adicionar a autenticação apenas de aplicação à aplicação que criou na compilação de aplicações .NET com o Microsoft Graph e a autenticação apenas de aplicações.
A biblioteca de cliente da Identidade do Azure para .NET fornece muitas TokenCredential classes que implementam fluxos de tokens OAuth2. A biblioteca de cliente .NET do Microsoft Graph utiliza essas classes para autenticar chamadas para o Microsoft Graph.
Configurar o cliente do Graph para autenticação apenas de aplicações
Nesta secção, vai utilizar a ClientSecretCredential classe para pedir um token de acesso com o fluxo de credenciais de cliente.
Crie um novo ficheiro no diretório GraphTutorial com o nome GraphHelper.cs e adicione o seguinte código a esse ficheiro.
using Azure.Core; using Azure.Identity; using Microsoft.Graph; using Microsoft.Graph.Models; class GraphHelper { }Adicione o seguinte código à classe
GraphHelper.// Settings object private static Settings? settings; // App-ony auth token credential private static ClientSecretCredential? clientSecretCredential; // Client configured with app-only authentication private static GraphServiceClient? appClient; public static void InitializeGraphForAppOnlyAuth(Settings settings) { GraphHelper.settings = settings; // Ensure settings isn't null _ = settings ?? throw new NullReferenceException("Settings cannot be null"); GraphHelper.settings = settings; clientSecretCredential ??= new ClientSecretCredential( GraphHelper.settings.TenantId, GraphHelper.settings.ClientId, GraphHelper.settings.ClientSecret); appClient ??= new GraphServiceClient( clientSecretCredential, /* Use the default scope, which will request the scopes configured on the app registration */ ["https://graph.microsoft.com/.default"]); }Substitua a função empty
InitializeGraphno Program.cs pelo seguinte.void InitializeGraph(Settings settings) { GraphHelper.InitializeGraphForAppOnlyAuth(settings); }
Este código declara duas propriedades privadas, um ClientSecretCredential objeto e um GraphServiceClient objeto. A InitializeGraphForAppOnlyAuth função cria uma nova instância de ClientSecretCredentiale, em seguida, utiliza essa instância para criar uma nova instância de GraphServiceClient. Sempre que é efetuada uma chamada à API ao Microsoft Graph através do _appClient, utiliza a credencial fornecida para obter um token de acesso.
Testar o ClientSecretCredential
Em seguida, adicione código para obter um token de acesso a ClientSecretCredentialpartir do .
Adicione a função a seguir à classe
GraphHelper.public static async Task<string> GetAppOnlyTokenAsync() { // Ensure credential isn't null _ = clientSecretCredential ?? throw new NullReferenceException("Graph has not been initialized for app-only auth"); // Request token with given scopes var context = new TokenRequestContext(["https://graph.microsoft.com/.default"]); var response = await clientSecretCredential.GetTokenAsync(context); return response.Token; }Substitua a função empty
DisplayAccessTokenAsyncno Program.cs pelo seguinte.async Task DisplayAccessTokenAsync() { try { var appOnlyToken = await GraphHelper.GetAppOnlyTokenAsync(); Console.WriteLine($"App-only token: {appOnlyToken}"); } catch (Exception ex) { Console.WriteLine($"Error getting app-only access token: {ex.Message}"); } }Crie e execute a aplicação. Introduza
1quando lhe for pedida uma opção. A aplicação apresenta um token de acesso..NET Graph Tutorial Please choose one of the following options: 0. Exit 1. Display access token 2. List users 3. Make a Graph call 1 App-only token: eyJ0eXAiOiJKV1QiLCJub25jZSI6IlVDTzRYOWtKYlNLVjVkRzJGenJqd2xvVUcwWS...Dica
Apenas para fins de validação e depuração, pode descodificar tokens de acesso apenas de aplicações com o analisador de tokens online da Microsoft em https://jwt.ms. Analisar o token pode ser útil se encontrar erros de token ao chamar o Microsoft Graph. Por exemplo, verificar se a
roleafirmação no token contém os âmbitos de permissão esperados do Microsoft Graph.