Freigeben über


Hinzufügen einer reinen App-Authentifizierung zu Python-Apps für Microsoft Graph

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

Die Azure Identity-Clientbibliothek für Python bietet viele TokenCredential Klassen, die OAuth2-Tokenflows implementieren. Das Microsoft Graph SDK für Python (Vorschau) 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 graph.py , und ersetzen Sie den gesamten Inhalt durch den folgenden Code.

    from configparser import SectionProxy
    from azure.identity.aio import ClientSecretCredential
    from msgraph import GraphServiceClient
    from msgraph.generated.users.users_request_builder import UsersRequestBuilder
    
    class Graph:
        settings: SectionProxy
        client_credential: ClientSecretCredential
        app_client: GraphServiceClient
    
        def __init__(self, config: SectionProxy):
            self.settings = config
            client_id = self.settings['clientId']
            tenant_id = self.settings['tenantId']
            client_secret = self.settings['clientSecret']
    
            self.client_credential = ClientSecretCredential(tenant_id, client_id, client_secret)
            self.app_client = GraphServiceClient(self.client_credential) # type: ignore
    

    Dieser Code deklariert zwei private Eigenschaften, ein ClientSecretCredential -Objekt und ein GraphServiceClient -Objekt. Die __init__ 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 app_clienterfolgt, werden die bereitgestellten Anmeldeinformationen verwendet, um ein Zugriffstoken abzurufen.

  2. Fügen Sie graph.py die folgende Funktion hinzu.

    async def get_app_only_token(self):
        graph_scope = 'https://graph.microsoft.com/.default'
        access_token = await self.client_credential.get_token(graph_scope)
        return access_token.token
    
  3. Ersetzen Sie die leere display_access_token Funktion in Standard.py durch Folgendes.

    async def display_access_token(graph: Graph):
        token = await graph.get_app_only_token()
        print('App-only token:', token, '\n')
    
  4. 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.

    Python Graph App-Only 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