Partager via


Ajouter l’authentification d’application uniquement aux applications Python pour Microsoft Graph

Dans cet article, vous allez ajouter l’authentification d’application uniquement à l’application que vous avez créée dans Générer des applications Python avec Microsoft Graph et l’authentification d’application uniquement.

La bibliothèque de client Azure Identity pour Python fournit de nombreuses TokenCredential classes qui implémentent des flux de jetonS OAuth2. Le Kit de développement logiciel (SDK) Microsoft Graph pour Python (préversion) utilise ces classes pour authentifier les appels à Microsoft Graph.

Configurer le client Graph pour l’authentification d’application uniquement

Dans cette section, vous utilisez la ClientSecretCredential classe pour demander un jeton d’accès à l’aide du flux d’informations d’identification du client.

  1. Ouvrez graph.py et remplacez tout son contenu par le code suivant.

    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
    

    Ce code déclare deux propriétés privées, un ClientSecretCredential objet et un GraphServiceClient objet . La __init__ fonction crée un instance de ClientSecretCredential, puis utilise cette instance pour créer un instance de GraphServiceClient. Chaque fois qu’un appel d’API est effectué à Microsoft Graph via , app_clientil utilise les informations d’identification fournies pour obtenir un jeton d’accès.

  2. Ajoutez la fonction suivante à graph.py.

    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. Remplacez la fonction vide display_access_token dans main.py par ce qui suit.

    async def display_access_token(graph: Graph):
        token = await graph.get_app_only_token()
        print('App-only token:', token, '\n')
    
  4. Générez et exécutez l’application. Entrez 1 lorsque vous êtes invité à entrer une option. L’application affiche un jeton d’accès.

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

    Conseil

    À des fins de validation et de débogage uniquement, vous pouvez décoder les jetons d’accès d’application uniquement à l’aide de l’analyseur de jetons en ligne de Microsoft à l’adresse https://jwt.ms. L’analyse de votre jeton peut être utile si vous rencontrez des erreurs de jeton lors de l’appel de Microsoft Graph. Par exemple, vérifier que la revendication dans le role jeton contient les étendues d’autorisation Microsoft Graph attendues.

Étape suivante