Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
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: ignoreEste código declara dos propiedades privadas, un
ClientSecretCredentialobjeto y unGraphServiceClientobjeto . La__init__función crea una nueva instancia deClientSecretCredentialy, a continuación, usa esa instancia para crear una nueva instancia deGraphServiceClient. Cada vez que se realiza una llamada API a Microsoft Graph a través deapp_client, usa la credencial proporcionada para obtener un token de acceso.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.tokenReemplace la función vacía
display_access_tokende 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')Compile y ejecute la aplicación. Escriba
1cuando 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
rolenotificación del token contiene los ámbitos de permiso de Microsoft Graph esperados.