Freigeben über


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:

  1. 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).

  2. Erstellen Sie eine virtuelle Umgebung für die App:

    py -m venv .venv
    .venv\scripts\activate
    
  3. Installieren Sie die Anforderungen mithilfe von pip:

    pip install -r requirements.txt
    
  4. 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
    
  5. 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.

  6. Nachdem das Anmeldefenster angezeigt wird, geben Sie das Konto an, mit dem Sie sich anmelden möchten, und wählen Sie Weiter aus.

    Screenshot: Anmeldebildschirm

  7. 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.

  8. Für Angemeldet bleiben können Sie entweder Nein oder Ja auswählen.

  9. 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.

  10. Der folgende Screenshot wird angezeigt, der angibt, dass Sie sich bei der Anwendung angemeldet haben:

    Screenshot: Angemeldeter Benutzer

  11. 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:

    Screenshot: Ergebnisse eines erfolgreichen API-Aufrufs

Abmelden von der App

  1. Wählen Sie Abmelden aus, um sich von der App abzumelden.
  2. Sie werden dazu aufgefordert, ein Konto zum Abmelden auszuwählen. Wählen Sie das Konto aus, das Sie für die Anmeldung verwendet haben.
  3. 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.