Inicio rápido: Inicio de sesión de usuarios y llamada a Microsoft Graph desde una aplicación web de Python Flask
En este inicio rápido, descargará y ejecutará un ejemplo de aplicación web de Python Flask que muestra cómo autenticar a los usuarios y llamar a Microsoft Graph API. Los usuarios de su organización de Microsoft Entra pueden iniciar sesión en la aplicación.
Prerrequisitos
- Una cuenta de Azure con una suscripción activa. Crear una cuenta de forma gratuita.
- Un cliente de Microsoft Entra. Para más información, consulte cómo obtener un inquilino de Microsoft Entra.
- Python 3 +
Paso 1: Registrar la aplicación
Siga estos pasos para registrar la aplicación en el Centro de administración de Microsoft Entra:
- Inicie sesión en el centro de administración de Microsoft Entra como al menos un administrador de aplicaciones en la nube.
- 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 Identidad>Aplicaciones>Registros de aplicaciones y seleccione Nuevo registro.
- Escriba un nombre para tu aplicación, por ejemplo python-webapp.
- En Tipos de cuenta admitidos, seleccione Solo las cuentas de este directorio organizativo.
- En URI de redirección, seleccione Web para la plataforma.
- Escriba un URI de redireccionamiento de
http://localhost:5000/getAToken
. Puede cambiar este valor más adelante. - Seleccione Registrar.
Paso 2: Agregar un secreto de cliente
La aplicación de ejemplo usa un secreto de cliente para demostrar su identidad cuando solicita tokens. Siga estos pasos para crear un secreto de cliente para la aplicación web de Python:
- En la página de información general de la aplicación, anote el valor del Identificador de aplicación (cliente) para su uso posterior.
- En Administrar, seleccione Certificados & y secretos y, en la sección Secretos de cliente, seleccione Nuevo secreto de cliente.
- Escriba una descripción para el secreto de cliente, deje la expiración predeterminada y seleccione Agregar.
- Guarde el valor del secreto de cliente en una ubicación segura. Necesita este valor para configurar el código y no puede recuperarlo más adelante.
Al crear credenciales para una aplicación cliente confidencial, Microsoft recomienda usar un certificado en lugar de un secreto de cliente antes de mover la aplicación a un entorno de producción. Para obtener más información sobre cómo usar un certificado, consulte estas instrucciones.
Paso 3: Agregar un ámbito
Dado que esta aplicación inicia sesión para los usuarios, debe agregar permisos delegados:
- En Administrar, seleccione Permisos de API>Add a permission (Agregar un permiso).
- Asegúrese de que la pestaña API de Microsoft está seleccionada.
- En la sección API de Microsoft más usadas, seleccione Microsoft Graph.
- En la sección Permisos delegados, asegúrese de que se haya seleccionado User.Read. Use el cuadro de búsqueda si es necesario.
- Seleccione Agregar permisos.
Paso 4: Descargar la aplicación de ejemplo
Descargue el ejemplo de código de Python o clone el repositorio:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-python/
Paso 5: Configuración de la aplicación de ejemplo
Abra la aplicación que descargó en un IDE y vaya a la carpeta raíz de la aplicación de ejemplo.
cd flask-web-app
Cree un archivo .env en la carpeta raíz del proyecto usando .env.sample como guía.
# The following variables are required for the app to run. CLIENT_ID=<Enter_your_client_id> CLIENT_SECRET=<Enter_your_client_secret> AUTHORITY=<Enter_your_authority_url>
- Establezca el valor de
CLIENT_ID
en el identificador de aplicación (cliente) de la aplicación registrada, disponible en la página de información general. - Establezca el valor de
CLIENT_SECRET
en el secreto de cliente que ha creado en Certificados y secretos para la aplicación registrada. - Establezca el valor de
AUTHORITY
en unhttps://login.microsoftonline.com/<TENANT_GUID>
. El id. de directorio (inquilino) está disponible en la página de información general del registro de la aplicación.
Se hace referencia a las variables de entorno en app_config.pyy se conservan en un archivo .env independiente para mantenerlos fuera del control de código fuente. El archivo .gitignore proporcionado impide que el archivo .env se proteja.
- Establezca el valor de
Paso 6: Ejecución de la aplicación de ejemplo
Cree un entorno virtual para la aplicación:
- Windows
- macOS/Linux
py -m venv .venv .venv\scripts\activate
Instale los requisitos mediante
pip
:pip install -r requirements.txt
Ejecute la aplicación desde la línea de comandos. Asegúrese de que la aplicación se ejecuta en el mismo puerto que el URI de redirección que configuró anteriormente.
flask run --debug --host=localhost --port=5000
Copie la dirección URL https que aparece en el terminal, por ejemplo, https://localhost:5000y péguela en un explorador. Se recomienda usar una sesión privada o incógnita del explorador.
Siga los pasos y escriba los detalles necesarios para iniciar sesión con su cuenta Microsoft. Se le pedirá que proporcione una dirección de correo electrónico y una contraseña para iniciar sesión.
La aplicación solicita permiso para mantener el acceso a los datos a los que le ha concedido acceso y para iniciar sesión y leer el perfil, como se muestra. Seleccione Aceptar.
- Aparece la captura de pantalla siguiente, que indica que ha iniciado sesión correctamente en la aplicación.
Cómo funciona
En el diagrama siguiente se muestra cómo funciona la aplicación de ejemplo:
La aplicación usa el paquete de
identity
para obtener un token de acceso de la plataforma de identidad de Microsoft. Este paquete se basa en la biblioteca de autenticación de Microsoft (MSAL) para Python para simplificar la autenticación y la autorización en las aplicaciones web.El token de acceso que obtiene en el paso anterior se usa como token de portador para autenticar al usuario al llamar a Microsoft Graph API.
Pasos siguientes
Para más información, cree una aplicación web de Python que inicie sesión de usuarios y llame a una API web protegida en la siguiente serie de tutoriales de varias partes: