Dela via


Självstudie: Anropa ett skyddat API och visa resultatet

I den föregående självstudien lade du till inloggnings- och utloggningsfunktionerna i programmet. Nu kan du bygga vidare på dessa funktioner för att tillåta att inloggade användare anropar ett skyddat webb-API. I den här självstudien anropar du Microsoft Graph API och visar profilinformation för den inloggade användaren.

I den här självstudien:

  • Lägga till kod för att anropa ett skyddat underordnat API
  • Köra och testa programmet

Anropa API:et och visa resultatet

Om du vill anropa ett skyddat API bör du först hämta en åtkomsttoken för den aktuella användaren genom att anropa auth.get_token_for_user på följande sätt:

@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)

När en användare navigerar till /call_downstream_api URL-vägen anropar Flask funktionen call_downstream_api() som först försöker hämta en åtkomsttoken med hjälp av auth.get_token_for_user(app_config.SCOPE). Om det finns ett autentiseringsproblem eller ett fel i token omdirigerar du användaren till inloggningssidan för omautentisering.

Om appen hämtar en åtkomsttoken gör den en HTTP-begäran till det underordnade API:et requests.get(...) med hjälp av metoden. I begäran anges vår underordnade API-URL i app_config.ENDPOINT. Du skickar även åtkomsttoken i fältet i Authorization begärandehuvudet.

En lyckad begäran till det underordnade API:et (Microsoft Graph API) returnerar ett JSON-svar som lagras i en api_result variabel och skickas till mallen display.html för återgivning.

Lägga till kod för att köra appen

Om du vill köra din app lägger du till följande kodfragment i slutet av din app.py-fil .

if __name__ == "__main__":
    app.run()

Testa appen

Följ de här stegen för att testa inloggningen, anropa API och logga ut i webbappen:

  1. Om du inte redan har gjort det ersätter du platshållarvärdena i .env.sample-filen med din Registreringsinformation för Microsoft Entra-appen (klient-ID, klienthemlighet och utfärdar-URL)

  2. Skapa en virtuell miljö för appen:

    py -m venv .venv
    .venv\scripts\activate
    
  3. Installera kraven med hjälp av pip:

    pip install -r requirements.txt
    
  4. Kör appen från kommandoraden. Kontrollera att appen körs på samma port som den omdirigerings-URI som du konfigurerade tidigare.

    flask run --host=localhost --port=5000
    
  5. Kopiera https-URL:en som visas i terminalen, https://localhost:5000till exempel , och klistra in den i en webbläsare. Vi rekommenderar att du använder en privat eller inkognito-webbläsarsession.

  6. När inloggningsfönstret visas anger du det konto som du vill logga in med och väljer Nästa:

    Skärmbild som visar inloggningsskärmen.

  7. Webbläsaren omdirigerar dig för att ange ett lösenord för ditt konto. Ange lösenordet och välj Logga in.

    I det här läget kan inloggningsflödet variera beroende på vilken säkerhetsinformation din organisation kräver, till exempel multifaktorautentisering med hjälp av en autentiseringsapp.

  8. För Håll dig inloggad kan du välja Antingen Nej eller Ja.

  9. Programmet begär behörighet att behålla åtkomsten till data som du har gett den åtkomst till, logga in dig och läsa din profil. Välj Godkänn för att godkänna dessa behörigheter.

  10. Följande skärmbild visas som anger att du är inloggad i programmet:

    Skärmbild som visar en inloggad användare.

  11. Om du vill anropa ett skyddat API och visa resultatet väljer du Anropa ett underordnat API. Ett lyckat anrop till Microsoft Graph API returnerar information om den inloggade användaren enligt följande:

    Skärmbild som visar resultatet av ett lyckat API-anrop.

Logga ut från appen

  1. Välj Logga ut för att logga ut från appen.
  2. Du uppmanas att välja ett konto att logga ut från. Välj det konto som du använde för att logga in.
  3. Ett meddelande visas som anger att du har loggat ut. Nu kan du stänga webbläsarfönstret.

Se även

Appen som du skapade använder identitetsbiblioteket, som sammanfattar mest information om Microsoft Authentication Library (MSAL) för Python. Mer information om hur du använder MSAL Python för olika scenarier finns i MSAL Python-dokumentationen.