Tutorial: Aufrufen einer geschützten API und Anzeigen der Ergebnisse
Im vorherigen Tutorialhaben Sie der Anwendung die Anmelde- und Abmeldefunktion hinzugefügt. Sie können jetzt auf diesen Funktionen aufbauen, um angemeldeten Benutzern den Aufruf einer geschützten Web-API zu ermöglichen. In diesem Tutorial rufen Sie die Microsoft Graph-API auf und zeigen Profilinformationen des angemeldeten Benutzers an.
In diesem Tutorial wird Folgendes durchgeführt:
- Hinzufügen von Code zum Aufrufen einer geschützten Downstream-API
- Ausführen und Testen der Anwendung
Aufrufen der API und Anzeigen der Ergebnisse
Zum Aufrufen einer geschützten API sollten Sie zunächst ein Zugriffstoken für den aktuellen Benutzer abrufen, indem Sie auth.get_token_for_user
wie folgt aufrufen:
@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)
Wenn ein Benutzer zur /call_downstream_api
-URL-Route navigiert, ruft Flask die call_downstream_api()
-Funktion auf. Diese versucht zuerst, ein Zugriffstoken mithilfe von auth.get_token_for_user(app_config.SCOPE)
abzurufen. Wenn ein Authentifizierungsproblem oder ein Fehler im Token vorliegt, wird der Benutzer zur erneuten Authentifizierung an die Anmeldeseite weitergeleitet.
Wenn die App erfolgreich ein Zugriffstoken abruft, wird mithilfe der requests.get(...)
-Methode eine HTTP-Anforderung an die Downstream-API gesendet. In der Anforderung wird die Downstream-API-URL in app_config.ENDPOINT
angegeben. Außerdem übergeben Sie das Zugriffstoken im Feld Authorization
des Anforderungsheaders.
Eine erfolgreiche Anforderung der Downstream-API (Microsoft Graph-API) gibt eine JSON-Antwort zurück, die in einer api_result
-Variablen gespeichert und zum Rendern an die display.html
-Vorlage übergeben wird.
Hinzufügen von Code zum Ausführen der App
Fügen Sie den folgenden Codeschnipsel am Ende Ihrer app.py-Datei hinzu, um Ihre App auszuführen.
if __name__ == "__main__":
app.run()
Testen der App
Führen Sie die folgenden Schritte aus, um die Anmeldung, den API-Aufruf und die Abmeldung in Ihrer Web-App zu testen:
Falls noch nicht geschehen, ersetzen Sie die Platzhalterwerte in der Datei .env.sample durch die Registrierungsdetails der Microsoft Entra-App (Client-ID, geheimer Clientschlüssel und Autoritäts-URL).
Erstellen Sie eine virtuelle Umgebung für die App:
py -m venv .venv .venv\scripts\activate
Installieren Sie die Anforderungen mithilfe von
pip
:pip install -r requirements.txt
Führen Sie die App über die Befehlszeile aus. Stellen Sie sicher, dass Ihre App auf demselben Port ausgeführt wird wie der Umleitungs-URI, den Sie zuvor konfiguriert haben.
flask run --host=localhost --port=5000
Kopieren Sie die HTTPS-URL, die im Terminal angezeigt wird (z. B. https://localhost:5000), und fügen Sie sie in einen Browser ein. Es wird empfohlen, eine private Browsersitzung oder eine Inkognito-Browsersitzung zu verwenden.
Nachdem das Anmeldefenster angezeigt wird, geben Sie das Konto an, mit dem Sie sich anmelden möchten, und wählen Sie Weiter aus.
Ihr Browser leitet Sie um, damit Sie ein Kennwort für Ihr Konto angeben können. Geben Sie das Kennwort ein, und wählen Sie Anmelden aus.
An diesem Punkt kann der Anmeldeflow je nach den Sicherheitsinformationen variieren, die Ihre Organisation voraussetzt, z. B. Multi-Faktor-Authentifizierung mithilfe einer Authentifikator-App.
Für Angemeldet bleiben können Sie entweder Nein oder Ja auswählen.
Die Anwendung fordert die Berechtigung an, um den Zugriff auf Daten beizubehalten, auf die Sie ihr Zugriff gewährt haben, um Sie anzumelden und Ihr Profil zu lesen. Wählen Sie Akzeptieren aus, um diesen Berechtigungen zuzustimmen.
Der folgende Screenshot wird angezeigt, der angibt, dass Sie sich bei der Anwendung angemeldet haben:
Um eine geschützte API aufzurufen und die Ergebnisse anzuzeigen, wählen Sie Downstream-API aufrufen aus. Ein erfolgreicher Aufruf der Microsoft Graph-API gibt Informationen zum angemeldeten Benutzer zurück, wie hier gezeigt:
Abmelden von der App
- Wählen Sie Abmelden aus, um sich von der App abzumelden.
- Sie werden dazu aufgefordert, ein Konto zum Abmelden auszuwählen. Wählen Sie das Konto aus, das Sie für die Anmeldung verwendet haben.
- Eine Meldung wird angezeigt, die angibt, dass Sie sich abgemeldet haben. Sie können nun das Browserfenster schließen.
Weitere Informationen
Die von Ihnen erstellten App verwendet die Identitätsbibliothek, die die meisten Details der Microsoft-Authentifizierungsbibliothek (Microsoft Authentication Library, MSAL) für Python abstrahiert. Weitere Informationen zur Verwendung von MSAL Python für verschiedene Szenarien finden Sie in der MSAL Python-Dokumentation.