Tutorial: Llamada a una API protegida y visualización de los resultados
En el tutorial anterior, agregó las experiencias de inicio y cierre de sesión a la aplicación. Ahora puede basarse en estas funcionalidades para permitir que los usuarios que han iniciado sesión llamen a una API web protegida. Para los fines de este tutorial, llame a Microsoft Graph API y muestre información de perfil del usuario que ha iniciado sesión.
En este tutorial:
- Adición de código para llamar a una API de bajada protegida
- Ejecutar y probar la aplicación
Llamar a la API y mostrar los resultados
Para llamar a una API protegida, primero debe adquirir un token de acceso para el usuario actual llamando a auth.get_token_for_user
de la siguiente manera:
@app.route("/call_downstream_api")
def call_downstream_api():
token = auth.get_token_for_user(app_config.SCOPE)
if "error" in token:
return redirect(url_for("login"))
# Use access token to call downstream api
api_result = requests.get(
app_config.ENDPOINT,
headers={'Authorization': 'Bearer ' + token['access_token']},
timeout=30,
).json()
return render_template('display.html', result=api_result)
Cuando un usuario navega a la ruta de dirección URL /call_downstream_api
, Flask invoca la función call_downstream_api()
que primero intenta obtener un token de acceso mediante auth.get_token_for_user(app_config.SCOPE)
. Si hay un problema de autenticación o algún error en el token, redirija al usuario a la página de inicio de sesión para la reautenticación.
Si la aplicación obtiene correctamente un token de acceso, realiza una solicitud HTTP a la API de bajada mediante el método requests.get(...)
. En la solicitud, la dirección URL de la API de bajada se especifica en app_config.ENDPOINT
. También se pasa el token de acceso en el campo Authorization
del encabezado de solicitud.
Una solicitud correcta a la API de bajada (Microsoft Graph API) devuelve una respuesta JSON almacenada en una variable api_result
y se pasa a la plantilla display.html
para la representación.
Incorporación de código para ejecutar la aplicación
Para ejecutar la aplicación, agregue el siguiente fragmento de código al final del archivo app.py.
if __name__ == "__main__":
app.run()
Prueba de la aplicación
Siga estos pasos para probar las experiencias de inicio de sesión, API de llamada y cierre de sesión en la aplicación web:
Si aún no lo ha hecho, reemplace los valores de marcador de posición en el archivo .env.sample por los detalles de registro de la aplicación Microsoft Entra (id. de cliente, secreto de cliente y dirección URL de autoridad)
Cree un entorno virtual para la aplicación:
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 identificador URI de redireccionamiento que ha configurado anteriormente.
flask run --host=localhost --port=5000
Copie la URL https que aparece en el terminal, por ejemplo, https://localhost:5000, y péguela en un navegador. Recomendamos utilizar una sesión de navegador privada o de incógnito.
Una vez que aparezca la ventana de inicio de sesión, proporcione la cuenta con la que iniciar sesión y seleccione Siguiente:
El explorador le redirigirá para proporcionar una contraseña para su cuenta. Escriba la contraseña y seleccione Iniciar sesión.
En este momento, el flujo de inicio de sesión puede variar en función de la información de seguridad que requiere su organización, por ejemplo, la autenticación multifactor mediante una aplicación autenticadora.
En Mantener sesión iniciada, puede seleccionar No o Sí.
La aplicación solicita permiso para mantener el acceso a los datos a los que le ha concedido acceso, iniciar sesión y leer el perfil. Seleccione Aceptar para dar su consentimiento a estos permisos.
Aparece la captura de pantalla siguiente, que indica que ha iniciado sesión en la aplicación:
Para llamar a una API protegida y mostrar los resultados, seleccione Llamada a una API de bajada. Una llamada correcta a Microsoft Graph API devuelve información sobre el usuario que ha iniciado sesión, como se muestra:
Cerrar sesión en la aplicación
- Seleccione Cerrar sesión para cerrar la sesión de la aplicación.
- Se le pide que elija una cuenta para cerrar sesión. Seleccione la cuenta que utilizó para iniciar sesión.
- Aparecerá un mensaje indicando que ha cerrado la sesión. Ahora puede cerrar la ventana del explorador.
Consulte también
La aplicación que ha creado usa la biblioteca de identidades, que abstrae la mayoría de los detalles de la Biblioteca de autenticación de Microsoft (MSAL) para Python. Para obtener más información sobre cómo usar MSAL Python para distintos escenarios, consulte la Documentación de MSAL Python.