Zelfstudie: Een beveiligde API aanroepen en de resultaten weergeven
In de vorige zelfstudie hebt u de aanmeldings- en afmeldingservaringen aan de toepassing toegevoegd. U kunt nu bouwen op deze functies om aangemelde gebruikers een beveiligde web-API te laten aanroepen. Voor deze zelfstudie roept u de Microsoft Graph API aan en geeft u profielgegevens weer van de aangemelde gebruiker.
In deze zelfstudie:
- Code toevoegen om een beveiligde downstream-API aan te roepen
- De toepassing uitvoeren en testen
De API aanroepen en de resultaten weergeven
Als u een beveiligde API wilt aanroepen, moet u eerst een toegangstoken voor de huidige gebruiker verkrijgen door als volgt aan te roepen auth.get_token_for_user
:
@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)
Wanneer een gebruiker naar de /call_downstream_api
URL-route navigeert, roept Flask de call_downstream_api()
functie aan die eerst probeert een toegangstoken te verkrijgen met behulp van auth.get_token_for_user(app_config.SCOPE)
. Als er een verificatieprobleem of een fout in het token optreedt, stuurt u de gebruiker om naar de aanmeldingspagina om opnieuw te verifiëren.
Als de app een toegangstoken heeft verkregen, wordt er een HTTP-aanvraag naar de downstream-API verzonden met behulp van de requests.get(...)
methode. In de aanvraag is onze downstream-API-URL opgegeven in app_config.ENDPOINT
. U geeft ook het toegangstoken door in het Authorization
veld van de aanvraagheader.
Een geslaagde aanvraag voor de downstream-API (Microsoft Graph API) retourneert een JSON-antwoord dat is opgeslagen in een api_result
variabele en wordt doorgegeven aan de display.html
sjabloon voor rendering.
Code toevoegen om de app uit te voeren
Als u uw app wilt uitvoeren, voegt u het volgende codefragment toe aan het einde van het app.py-bestand .
if __name__ == "__main__":
app.run()
De app testen
Volg deze stappen om de aanmeldingservaringen te testen, API aan te roepen en af te melden in uw web-app:
Als u dit nog niet hebt gedaan, vervangt u de waarden van de tijdelijke aanduidingen in het .env.sample-bestand door de registratiegegevens van uw Microsoft Entra-app (client-id, clientgeheim en URL van de instantie)
Maak een virtuele omgeving voor de app:
py -m venv .venv .venv\scripts\activate
Installeer de vereisten met behulp van
pip
:pip install -r requirements.txt
Voer de app uit vanaf de opdrachtregel. Zorg ervoor dat uw app wordt uitgevoerd op dezelfde poort als de omleidings-URI die u eerder hebt geconfigureerd.
flask run --host=localhost --port=5000
Kopieer de HTTPS-URL die in de terminal wordt weergegeven, https://localhost:5000bijvoorbeeld en plak deze in een browser. U wordt aangeraden een privé- of incognitobrowsersessie te gebruiken.
Nadat het aanmeldingsvenster wordt weergegeven, geeft u het account op waarmee u zich wilt aanmelden en selecteert u Volgende:
In uw browser wordt u omgeleid om een wachtwoord voor uw account op te geven. Voer het wachtwoord in en selecteer Aanmelden.
Op dit moment kan de aanmeldingsstroom variëren, afhankelijk van de beveiligingsgegevens die uw organisatie nodig heeft, bijvoorbeeld meervoudige verificatie met behulp van een verificator-app.
Voor Aangemeld blijven kunt u Nee of Ja selecteren.
De toepassing vraagt toestemming om toegang te behouden tot gegevens waarvoor u toegang hebt gekregen, u aan te melden en uw profiel te lezen. Selecteer Accepteren om toestemming te geven voor deze machtigingen.
De volgende schermopname wordt weergegeven, waarmee wordt aangegeven dat u bent aangemeld bij de toepassing:
Als u een beveiligde API wilt aanroepen en de resultaten wilt weergeven, selecteert u Een downstream-API aanroepen. Een geslaagde aanroep van de Microsoft Graph API retourneert informatie over de aangemelde gebruiker, zoals wordt weergegeven:
Afmelden bij de app
- Selecteer Afmelden om u af te melden bij de app.
- U wordt gevraagd een account te kiezen om u af te melden. Selecteer het account dat u hebt gebruikt om u aan te melden.
- Er verschijnt een bericht dat aangeeft dat u bent afgemeld. U kunt nu het browservenster sluiten.
Zie ook
De app die u hebt gemaakt, maakt gebruik van de identiteitsbibliotheek, waarmee de meeste details van de Microsoft Authentication Library (MSAL) voor Python worden geabstraheerd. Zie de MSAL Python-documentatie voor meer informatie over het gebruik van MSAL Python voor verschillende scenario's.