Tutoriel : appeler une API protégée et afficher les résultats
Dans le tutoriel précédent, vous avez ajouté les expériences de connexion et de déconnexion à l’application. Vous pouvez désormais vous appuyer sur ces fonctionnalités pour autoriser les utilisateurs connectés à appeler une API web protégée. Dans le cadre de ce tutoriel, vous appelez l’API Microsoft Graph et affichez les informations de profil de l’utilisateur connecté.
Dans ce tutoriel :
- Ajouter du code pour appeler une API protégée en aval
- Exécuter et tester l'application
Appeler l’API et afficher les résultats
Pour appeler une API protégée, vous devez d’abord acquérir un jeton d’accès pour l’utilisateur actuel en appelant auth.get_token_for_user
de la façon suivante :
@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)
Quand un utilisateur accède à la route d’URL /call_downstream_api
, Flask appelle la fonction call_downstream_api()
qui tente d’abord d’obtenir un jeton d’accès en utilisant auth.get_token_for_user(app_config.SCOPE)
. S’il existe une erreur ou un problème d’authentification dans le jeton, redirigez l’utilisateur vers la page de connexion pour se réauthentifier.
Si l’application a correctement obtenu un jeton d’accès, elle effectue une requête HTTP à l’API en aval en utilisant la méthode requests.get(...)
. Dans la requête, notre URL d’API en aval est spécifiée dans app_config.ENDPOINT
. Vous transmettez également le jeton d’accès dans le champ Authorization
de l’en-tête de demande.
Une requête correcte à l’API en aval (API Microsoft Graph) renvoie une réponse JSON stockée dans une variable api_result
et transmise au modèle display.html
pour le rendu.
Ajouter du code pour exécuter l’application
Pour exécuter votre application, ajoutez l’extrait de code suivant à la fin de votre fichier app.py.
if __name__ == "__main__":
app.run()
Test de l'application
Suivez ces étapes pour tester les expériences de connexion, d’appel de l’API et de déconnexion dans votre application web :
Si vous ne l’avez pas encore effectué, remplacez les valeurs d’espace réservé dans le fichier .env.sample par les informations de votre inscription d’application Microsoft Entra (ID client, clé secrète client et URL d’autorité)
Créez un environnement virtuel pour l’application :
py -m venv .venv .venv\scripts\activate
Installez les exigences à l’aide de :
pip
pip install -r requirements.txt
Exécutez l’application depuis la ligne de commande. Vérifiez que votre application s’exécute sur le même port que l’URI de redirection que vous avez configuré précédemment.
flask run --host=localhost --port=5000
Copiez l’URL HTTPS qui s’affiche dans le terminal (par exemple, https://localhost:5000), et collez-la dans un navigateur. Nous vous recommandons d’utiliser une session de navigateur privée ou incognito.
Une fois que la fenêtre de connexion s’affiche, fournissez le compte avec lequel vous vous connectez, puis sélectionnez Suivant :
Votre navigateur vous redirige afin que vous fournissiez un mot de passe pour votre compte. Entrez le mot de passe, puis sélectionnez Se connecter.
À ce stade, il est possible que le flux de connexion varie en fonction des informations de sécurité exigées par votre organisation comme, par exemple, l’authentification multifacteur via une application d’authentificateur.
Pour Rester connecté, vous pouvez sélectionner Non ou Oui.
L’application demande l’autorisation de conserver l’accès aux données que vous lui avez donné, pour vous connecter et lire votre profil. Sélectionnez Accepter pour consentir à ces autorisations.
La capture d’écran suivante s’affiche, indiquant que vous êtes connecté à l’application :
Pour appeler une API protégée et afficher les résultats, sélectionnez Appeler une API en aval. Un appel réussi à l’API Microsoft Graph renvoie des informations sur l’utilisateur connecté comme illustré ci-dessous :
Déconnexion de l’application
- Sélectionnez Se déconnecter pour vous déconnecter de l’application.
- Vous êtes invité à choisir un compte à partir duquel vous souhaitez vous déconnecter. Sélectionnez le compte que vous avez utilisé pour vous connecter.
- Un message s’affiche, indiquant que vous vous êtes déconnecté. Vous pouvez maintenant fermer la fenêtre du navigateur.
Voir aussi
L’application générée utilise la bibliothèque d’identités qui résume la plupart des informations de la Bibliothèque d’authentification Microsoft (MSAL) pour Python. Pour obtenir plus d’informations sur l’utilisation de MSAL Python pour divers scénarios, consultez la Documentation MSAL Python.