Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Werknemerstenants
Externe tenants (meer informatie)
In deze zelfstudie roept u Microsoft Graph API aan vanuit een Python Flask-web-app. In de vorige tutorialhebt u de aanmeld- en afmeldervaringen toegevoegd aan de applicatie. Zodra een gebruiker zich aanmeldt, verkrijgt de app een toegangstoken om Microsoft Graph API aan te roepen.
In deze zelfstudie gaat u het volgende doen:
- Een bestaande Python Flask-web-app bijwerken om een toegangstoken te verkrijgen
- Gebruik het toegangstoken om Microsoft Graph API aan te roepen.
Voorwaarden
Voltooi de stappen in Handleiding: Inloggen toevoegen aan een Python Flask webapp met behulp van Microsoft Identity Platform.
Bereiken en API-eindpunt definiëren
In dit voorbeeld roepen we de Microsoft Graph API aan om de profielgegevens van de aangemelde gebruiker op te halen. Als uw app zich in een personeelstenant bevindt, geeft de gebruiker bij aanmelding toestemming voor de bereiken die de app nodig heeft voor toegang tot de Microsoft Graph API. Als uw app zich in een externe tenant bevindt, moet u ervoor zorgen dat u beheerderstoestemming verlenen namens gebruikers in uw tenant. De app gebruikt vervolgens het toegangstoken om de API aan te roepen en de resultaten weer te geven.
Voeg in uw .env-bestand het eindpunt toe waar we een oproep naar doen en de scopes die nodig zijn om de Microsoft Graph API aan te roepen.
SCOPE=User.Read
ENDPOINT=https://graph.microsoft.com/v1.0/me
Lees de nieuwe configuraties in uw app door het app_config.py-bestand bij te werken.
# other configs go here
SCOPE = os.getenv("SCOPE")
ENDPOINT = os.getenv("ENDPOINT")
Een beveiligde API aanroepen
Geef het API-eindpunt door aan de startpagina. Hiermee kunt u uw eindpunt aanroepen. Werk de
/route bij zodat deze er als volgt uitziet in het volgende codefragment:@app.route("/") @auth.login_required def index(*, context): return render_template( 'index.html', user=context['user'], title="Flask Web App Sample", api_endpoint=os.getenv("ENDPOINT") # added this line )Roep de beveiligde Microsoft Graph API aan, zoals wordt weergegeven in het volgende codefragment. We dragen de lijst met scopes over die onze app moet gebruiken. Als er scopes aanwezig zijn, bevat de context een toegangstoken. Het toegangstoken wordt gebruikt om de downstream-API aan te roepen. Voeg deze code toe aan het app.py-bestand:
@app.route("/call_api") @auth.login_required(scopes=os.getenv("SCOPE", "").split()) def call_downstream_api(*, context): api_result = requests.get( # Use access token to call a web api os.getenv("ENDPOINT"), headers={'Authorization': 'Bearer ' + context['access_token']}, timeout=30, ).json() if context.get('access_token') else "Did you forget to set the SCOPE environment variable?" return render_template('display.html', title="API Response", result=api_result)Als de app een toegangstoken heeft verkregen, wordt er een HTTP-aanvraag naar de downstream-API verzonden met behulp van de methode
requests.get(...). In de aanvraag wordt onze downstream-API-URL opgegeven inapp_config.ENDPOINTen het toegangstoken dat is doorgegeven in hetAuthorizationveld van de aanvraagheader.Een geslaagde aanvraag voor de downstream-API (Microsoft Graph API) retourneert een JSON-antwoord dat is opgeslagen in een
api_resultvariabele en wordt doorgegeven aan dedisplay.html-sjabloon voor rendering.
API-resultaten weergeven
Maak een bestand met de naam display.html in de map sjablonen. Op deze pagina wordt het resultaat van de aanroep naar het Microsoft Graph-eindpunt weergegeven. Voeg de volgende code toe aan het display.html-bestand:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Microsoft Identity Python Web App: API</title>
</head>
<body>
<a href="javascript:window.history.go(-1)">Back</a> <!-- Displayed on top of a potentially large JSON response, so it will remain visible -->
<h1>{{title}}</h1>
<pre>{{ result |tojson(indent=4) }}</pre> <!-- Just a generic json viewer -->
</body>
</html>
De voorbeeldweb-app uitvoeren en testen
Voer in de terminal de volgende opdracht uit:
python3 -m flask run --debug --host=localhost --port=3000U kunt de poort van uw keuze gebruiken. Deze poort moet vergelijkbaar zijn met de poort van de omleidings-URI die u eerder hebt geregistreerd.
Open uw browser en ga vervolgens naar
http://localhost:3000. U ziet een aanmeldingspagina.Meld u aan met uw Microsoft-account door de stappen te volgen. U wordt gevraagd een e-mailadres en wachtwoord op te geven om u aan te melden.
Als er scopes nodig zijn voor de toepassing, wordt er een toestemmingsscherm weergegeven. De toepassing vraagt toestemming om toegang te behouden tot gegevens die u toestaat en om u aan te melden. Selecteer Accepteren. Dit scherm wordt niet weergegeven als er geen scopes zijn gedefinieerd.
API aanroepen
Selecteer de koppeling Een API- aanroepen op de startpagina. De app roept de Microsoft Graph API aan om de profielgegevens van de aangemelde gebruiker op te halen. De app geeft het resultaat weer van de aanroep naar de API.
Selecteer afmelden om u af te melden van 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.
Referentiemateriaal
De ms_identity_python abstracteert de details van de MSAL-bibliotheek. Zie MSAL Python-documentatievoor meer informatie. Dit referentiemateriaal helpt u inzicht te krijgen in hoe u een app initialiseert en tokens verkrijgt met BEHULP van MSAL Python.