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: ignore
Este código declara dos propiedades privadas, un
ClientSecretCredential
objeto y unGraphServiceClient
objeto . La__init__
función crea una nueva instancia deClientSecretCredential
y, 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.token
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')
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.