Inicio rápido: Adquisición de un token y llamada a Microsoft Graph desde una aplicación demonio de Python
En este inicio rápido descargará y ejecutará un código de ejemplo que muestra cómo una aplicación de Python puede obtener un token de acceso mediante la identidad de la aplicación para llamar a Microsoft Graph API y mostrar una lista de usuarios del directorio. En el ejemplo de código se muestra cómo se puede ejecutar un trabajo desatendido o un servicio de Windows con una identidad de aplicación, en lugar de la identidad de un usuario.
Requisitos previos
Para ejecutar esta muestra, necesita:
Registro y descarga de la aplicación de inicio rápido
Paso 1: Registrar su aplicación
Sugerencia
Los pasos de este artículo pueden variar ligeramente en función del portal desde donde comienza.
Para registrar la aplicación y agregar la información de registro de la aplicación a la solución de forma manual, siga estos pasos:
- Inicie sesión en el centro de administración de Microsoft Entra.
- Si tiene acceso a varios inquilinos, use el icono Configuración del menú superior para cambiar al inquilino en el que desea registrar la aplicación desde el menú Directorios y suscripciones.
- Vaya a Identity>Aplicaciones>Registros de aplicaciones, seleccione Nuevo registro.
- Escriba el Nombre de la aplicación, por ejemplo
Daemon-console
. Los usuarios de la aplicación pueden ver este nombre, el cual se puede cambiar más tarde. - Seleccione Registrar.
- En Administrar, seleccione Certificados y secretos.
- En Secretos de cliente, seleccione Nuevo secreto de cliente, escriba un nombre y seleccione Agregar. Grabe el valor del secreto en una ubicación segura para usarlo en un paso posterior.
- En Administrar, seleccione Permisos de API>Add a permission (Agregar un permiso). Seleccione Microsoft Graph.
- Seleccione Permisos de aplicación.
- En el nodo Usuario, seleccione User.Read.All y, luego, Agregar permisos.
Paso 2: Descarga del proyecto de Python
Descargue el proyecto de demonio de Python
Paso 3: Configuración del proyecto de Python
Extraiga el archivo ZIP en una carpeta local próxima a la raíz del disco, por ejemplo, C:\Azure-Samples.
Vaya a la subcarpeta 1-Call-MsGraph-WithSecret.
Edite parameters.json y sustituya los valores de los campos
authority
,client_id
ysecret
por el fragmento de código siguiente:"authority": "https://login.microsoftonline.com/Enter_the_Tenant_Id_Here", "client_id": "Enter_the_Application_Id_Here", "secret": "Enter_the_Client_Secret_Here"
Donde:
Enter_the_Application_Id_Here
: es el Identificador de aplicación (cliente) de la aplicación que registró.Enter_the_Tenant_Id_Here
: sustituya este valor por el identificador de inquilino o el nombre de inquilino (por ejemplo, contoso.microsoft.com)Enter_the_Client_Secret_Here
: sustituya este valor por el secreto de cliente creado en el paso 1.
Sugerencia
Para encontrar los valores de Id. de la aplicación (cliente) e Id. de directorio (inquilino), vaya a la página Información general de Centro de administración Microsoft Entra. Para generar una nueva clave, vaya a la página Certificates & secrets (Certificados y secretos).
Usuario estándar
Si es usuario estándar de su inquilino, pídale a un administrador global que conceda consentimiento del administrador para su aplicación. Para ello, proporcione la siguiente dirección URL a su administrador:
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
Donde:
Enter_the_Tenant_Id_Here
: sustituya este valor por el identificador de inquilino o el nombre de inquilino (por ejemplo, contoso.microsoft.com)Enter_the_Application_Id_Here
: es el Identificador de aplicación (cliente) que ha registrado previamente.
Paso 5: Ejecución de la aplicación
Deberá instalar las dependencias de este ejemplo una vez.
pip install -r requirements.txt
A continuación, ejecute la aplicación a través del símbolo del sistema o la consola:
python confidential_client_secret_sample.py parameters.json
Debería ver en la salida de la consola algún fragmento de JSON que represente una lista de los usuarios del directorio de Microsoft Entra.
Importante
Esta aplicación de inicio rápido usa un secreto de cliente para identificarse como cliente confidencial. Como el secreto de cliente se agrega como texto sin formato a los archivos del proyecto, por motivos de seguridad, se recomienda que use un certificado en lugar de un secreto de cliente antes de considerar el uso de la aplicación en producción. Para más información sobre cómo usar un certificado, consulte estas instrucciones en el mismo repositorio de GitHub que este ejemplo, pero en la segunda carpeta, 2-Call-MsGraph-WithCertificate.
Más información
MSAL Python
MSAL para Python es la biblioteca que se usa para iniciar la sesión de los usuarios y solicitar los tokens que se usan para acceder a una API protegida por la Plataforma de identidad de Microsoft. Como se ha descrito, en este inicio rápido se solicitan tokens mediante la propia identidad de la aplicación, en lugar de permisos delegados. El flujo de autenticación usado en este caso se conoce como flujo de OAuth de credenciales de cliente. Para obtener más información sobre cómo usar MSAL para Python con aplicaciones de demonio, consulte este artículo.
Para instalar MSAL para Python, ejecute el siguiente comando pip.
pip install msal
Inicialización de MSAL
Puede agregar la referencia de MSAL con el código siguiente:
import msal
A continuación, realice la inicialización de MSAL con el siguiente código:
app = msal.ConfidentialClientApplication(
config["client_id"], authority=config["authority"],
client_credential=config["secret"])
Donde: | Descripción |
---|---|
config["secret"] |
Es el secreto de cliente creado para la aplicación en el centro de administración de Microsoft Entra. |
config["client_id"] |
Es el Identificador de aplicación (cliente) de la aplicación registrada en el centro de administración de Microsoft Entra. Puede encontrar este valor en la página Información general de la aplicación en el centro de administración de Microsoft Entra. |
config["authority"] |
El punto de conexión STS para el usuario que se autenticará. Normalmente https://login.microsoftonline.com/{tenant} en la nube pública, donde {tenant} es el nombre o el Identificador del inquilino. |
Para más información, consulte la documentación de referencia de ConfidentialClientApplication
.
Solicitud de tokens
Para solicitar un token con la identidad de la aplicación, use el método AcquireTokenForClient
:
result = None
result = app.acquire_token_silent(config["scope"], account=None)
if not result:
logging.info("No suitable token exists in cache. Let's get a new one from AAD.")
result = app.acquire_token_for_client(scopes=config["scope"])
Donde: | Descripción |
---|---|
config["scope"] |
Contiene los ámbitos solicitados. Con clientes confidenciales, se debe usar un formato similar a {Application ID URI}/.default para indicar que los ámbitos que se solicitan son los definidos estáticamente en el objeto de aplicación establecido en el centro de administración de Microsoft Entra (en Microsoft Graph, {Application ID URI} apunta a https://graph.microsoft.com ). Con API web personalizadas, {Application ID URI} se define en la sección Exponer una API en Registros de aplicaciones en el centro de administración de Microsoft Entra. |
Para más información, consulte la documentación de referencia de AcquireTokenForClient
.
Ayuda y soporte técnico
Si necesita ayuda, desea informar de un problema o desea obtener información sobre las opciones de soporte técnico, consulte Opciones de ayuda y soporte técnico para desarrolladores.
Pasos siguientes
Para más información sobre las aplicaciones demonio, consulte la página de aterrizaje del escenario.