Compartir a través de


Adición de autenticación solo de aplicación a aplicaciones de Python para Microsoft Graph

En este artículo, agregará autenticación solo de aplicación a la aplicación que creó en Compilación de aplicaciones de Python con Microsoft Graph y autenticación solo de aplicación.

La biblioteca cliente de Identidad de Azure para Python proporciona muchas TokenCredential clases que implementan flujos de token de OAuth2. El SDK de Microsoft Graph para Python (versión preliminar) usa esas clases para autenticar las llamadas a Microsoft Graph.

Configuración del cliente de Graph para la autenticación solo de la aplicación

En esta sección, usará la ClientSecretCredential clase para solicitar un token de acceso mediante el flujo de credenciales de cliente.

  1. Abra graph.py y reemplace todo su contenido por el código siguiente.

    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
    

    Este código declara dos propiedades privadas, un ClientSecretCredential objeto y un GraphServiceClient objeto . La __init__ función crea una nueva instancia de ClientSecretCredentialy, a continuación, usa esa instancia para crear una nueva instancia de GraphServiceClient. Cada vez que se realiza una llamada API a Microsoft Graph a través de app_client, usa la credencial proporcionada para obtener un token de acceso.

  2. Agregue la siguiente función a 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. Reemplace la función vacía display_access_token de main.py por lo siguiente.

    async def display_access_token(graph: Graph):
        token = await graph.get_app_only_token()
        print('App-only token:', token, '\n')
    
  4. Compile y ejecute la aplicación. Escriba 1 cuando se le solicite una opción. La aplicación muestra un token de acceso.

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

    Sugerencia

    Solo con fines de validación y depuración, puede descodificar tokens de acceso de solo aplicación mediante el analizador de tokens en línea de Microsoft en https://jwt.ms. El análisis del token puede ser útil si se producen errores de token al llamar a Microsoft Graph. Por ejemplo, comprobar que la role notificación del token contiene los ámbitos de permiso de Microsoft Graph esperados.

Paso siguiente