Hinzufügen der reinen App-Authentifizierung zu .NET-Apps für Microsoft Graph

In diesem Artikel fügen Sie der Anwendung, die Sie unter Erstellen von .NET-Apps mit Microsoft Graph und nur App-Authentifizierung erstellt haben, die reine App-Authentifizierung hinzu.

Die Azure Identity-Clientbibliothek für .NET bietet viele TokenCredential Klassen, die OAuth2-Tokenflows implementieren. Die Microsoft Graph .NET-Clientbibliothek verwendet diese Klassen, um Aufrufe von Microsoft Graph zu authentifizieren.

Konfigurieren des Graph-Clients für die reine App-Authentifizierung

In diesem Abschnitt verwenden Sie die ClientSecretCredential -Klasse, um mithilfe des Clientanmeldeinformationsflows ein Zugriffstoken anzufordern.

  1. Erstellen Sie im Verzeichnis GraphTutorial eine neue Datei mit dem Namen GraphHelper.cs , und fügen Sie der Datei den folgenden Code hinzu.

    using Azure.Core;
    using Azure.Identity;
    using Microsoft.Graph;
    using Microsoft.Graph.Models;
    
    class GraphHelper
    {
    }
    
  2. Fügen Sie der GraphHelper-Klasse den folgenden Code hinzu.

    // 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"]);
    }
    
  3. Ersetzen Sie die leere InitializeGraph Funktion in Program.cs durch Folgendes.

    void InitializeGraph(Settings settings)
    {
        GraphHelper.InitializeGraphForAppOnlyAuth(settings);
    }
    

Dieser Code deklariert zwei private Eigenschaften, ein ClientSecretCredential -Objekt und ein GraphServiceClient -Objekt. Die InitializeGraphForAppOnlyAuth Funktion erstellt eine neue instance von ClientSecretCredentialund verwendet dann diesen instance, um eine neue instance von GraphServiceClientzu erstellen. Jedes Mal, wenn ein API-Aufruf an Microsoft Graph über _appClienterfolgt, werden die bereitgestellten Anmeldeinformationen verwendet, um ein Zugriffstoken abzurufen.

Testen von ClientSecretCredential

Fügen Sie als Nächstes Code hinzu, um ein Zugriffstoken ClientSecretCredentialvon abzurufen.

  1. Fügen Sie die folgende Funktion zur GraphHelper-Klasse hinzu:

    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;
    }
    
  2. Ersetzen Sie die leere DisplayAccessTokenAsync Funktion in Program.cs durch Folgendes.

    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}");
        }
    }
    
  3. Erstellen Sie die App, und führen Sie sie aus. Geben Sie ein 1 , wenn Sie zur Eingabe einer Option aufgefordert werden. Die Anwendung zeigt ein Zugriffstoken an.

    .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...
    

    Tipp

    Nur zu Validierungs- und Debugzwecken können Sie Nur-App-Zugriffstoken mithilfe des Onlinetokenparsers von Microsoft unter https://jwt.msdecodieren. Die Analyse Ihres Tokens kann nützlich sein, wenn beim Aufrufen von Microsoft Graph Tokenfehler auftreten. Beispielsweise wird überprüft, ob der role Anspruch im Token die erwarteten Microsoft Graph-Berechtigungsbereiche enthält.

Nächster Schritt