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

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

Die Azure Identity-Clientbibliothek für JavaScript bietet viele TokenCredential Klassen, die OAuth2-Tokenflows implementieren. Die Microsoft Graph-JavaScript-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. Öffnen Sie graphHelper.js , und fügen Sie den folgenden Code hinzu.

    import 'isomorphic-fetch';
    import { ClientSecretCredential } from '@azure/identity';
    import { Client } from '@microsoft/microsoft-graph-client';
    // prettier-ignore
    import { TokenCredentialAuthenticationProvider } from
      '@microsoft/microsoft-graph-client/authProviders/azureTokenCredentials/index.js';
    
    let _settings = undefined;
    let _clientSecretCredential = undefined;
    let _appClient = undefined;
    
    export function initializeGraphForAppOnlyAuth(settings) {
      // Ensure settings isn't null
      if (!settings) {
        throw new Error('Settings cannot be undefined');
      }
    
      _settings = settings;
    
      // Ensure settings isn't null
      if (!_settings) {
        throw new Error('Settings cannot be undefined');
      }
    
      if (!_clientSecretCredential) {
        _clientSecretCredential = new ClientSecretCredential(
          _settings.tenantId,
          _settings.clientId,
          _settings.clientSecret,
        );
      }
    
      if (!_appClient) {
        const authProvider = new TokenCredentialAuthenticationProvider(
          _clientSecretCredential,
          {
            scopes: ['https://graph.microsoft.com/.default'],
          },
        );
    
        _appClient = Client.initWithMiddleware({
          authProvider: authProvider,
        });
      }
    }
    
  2. Ersetzen Sie die leere initializeGraph Funktion in index.js durch Folgendes.

    function initializeGraph(settings) {
      initializeGraphForAppOnlyAuth(settings);
    }
    

Dieser Code deklariert zwei private Eigenschaften, ein ClientSecretCredential -Objekt und ein Client -Objekt. Die InitializeGraphForAppOnlyAuth Funktion erstellt eine neue instance von ClientSecretCredentialund verwendet dann diesen instance, um eine neue instance von Clientzu 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 graphHelper.jsdie folgende Funktion hinzu.

    export async function getAppOnlyTokenAsync() {
      // Ensure credential isn't undefined
      if (!_clientSecretCredential) {
        throw new Error('Graph has not been initialized for app-only auth');
      }
    
      // Request token with given scopes
      const response = await _clientSecretCredential.getToken([
        'https://graph.microsoft.com/.default',
      ]);
      return response.token;
    }
    
  2. Ersetzen Sie die leere displayAccessTokenAsync Funktion in index.js durch Folgendes.

    async function displayAccessTokenAsync() {
      try {
        const appOnlyToken = await getAppOnlyTokenAsync();
        console.log(`App-only token: ${appOnlyToken}`);
      } catch (err) {
        console.log(`Error getting app-only access token: ${err}`);
      }
    }
    
  3. Führen Sie den folgenden Befehl in Ihrer CLI im Stammverzeichnis Ihres Projekts aus.

    node index.js
    
  4. Geben Sie ein 1 , wenn Sie zur Eingabe einer Option aufgefordert werden. Die Anwendung zeigt ein Zugriffstoken an.

    JavaScript Graph App-Only Tutorial
    
    [1] Display access token
    [2] List users
    [3] Make a Graph call
    [0] Exit
    
    Select an option [1...3 / 0]: 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