Share via


Quickstart: Een token verkrijgen en Microsoft Graph API aanroepen vanuit een Python-console-app met behulp van de identiteit van de app

Welkom! Dit is waarschijnlijk niet de pagina die u verwachtte te zien. Terwijl we aan een oplossing voor dit probleem werken, kunt u met deze koppeling naar het juiste artikel gaan:

Quickstart: Een token verkrijgen en Microsoft Graph aanroepen vanuit een Python-daemon-app

Onze excuses voor het ongemak en bedankt voor uw geduld tijdens onze inspanningen om dit probleem op te lossen.

In deze quickstart downloadt u een codevoorbeeld en voert u dit uit. Het codevoorbeeld laat zien hoe u met een Python-toepassing een toegangstoken kunt krijgen, met behulp van de app-id, om de Microsoft Graph API aan te roepen en een lijst met gebruikers weer te geven in de map. Het codevoorbeeld laat zien hoe een taak of Windows-service zonder toezicht kan worden uitgevoerd met een toepassings-id, in plaats van een gebruikers-id.

Vereisten

Als u dit voorbeeld wilt uitvoeren, hebt u het volgende nodig:

De quickstart-app downloaden en configureren

Stap 1: Uw toepassing configureren in Azure Portal

Voordat het codevoorbeeld in deze quickstart werkt, maakt u een clientgeheim en voegt u de machtiging User.Read.All van de Graph API toe.

Already configured Uw toepassing is geconfigureerd met deze kenmerken.

Stap 2: Het Python-project downloaden

Notitie

Enter_the_Supported_Account_Info_Here

Als u op dit moment probeert de toepassing uit te voeren, krijgt u de foutmelding HTTP 403: verboden: Insufficient privileges to complete the operation. Deze fout treedt op omdat voor elke app-alleen-machtiging Beheer toestemming is vereist: een globale Beheer istrator van uw directory moet toestemming geven voor uw toepassing. Selecteer een van de opties hieronder, afhankelijk van uw rol:

Globale tenantbeheerder

Als u een globale Beheer istrator bent, gaat u naar de pagina API-machtigingen en selecteert u Beheerderstoestemming verlenen voor Enter_the_Tenant_Name_Here.

Standaardgebruiker

Als u een standaardgebruiker van uw tenant bent, vraagt u een globale Beheer istrator om beheerderstoestemming te verlenen voor uw toepassing. Daarvoor verstrekt u de volgende URL aan uw beheerder:

https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here

Stap 4: De toepassing uitvoeren

U moet de afhankelijkheden van dit voorbeeld eenmaal installeren.

pip install -r requirements.txt

Voer dan de toepassing uit via de opdrachtprompt of console:

python confidential_client_secret_sample.py parameters.json

U ziet in de console uitvoer een Json-fragment dat een lijst met gebruikers in uw Microsoft Entra-map vertegenwoordigt.

Belangrijk

Deze quickstarttoepassing gebruikt een clientgeheim om zichzelf te identificeren als vertrouwelijke client. Omdat het clientgeheim als platte tekst aan uw projectbestanden wordt toegevoegd, wordt u om veiligheidsredenen aangeraden een certificaat te gebruiken in plaats van een clientgeheim voordat u de toepassing als productietoepassing beschouwt. Zie voor meer informatie over het gebruik van een certificaat deze instructies in dezelfde GitHub-opslagplaats voor dit voorbeeld, maar in de tweede map 2-Call-MsGraph-WithCertificate.

Meer informatie

MSAL Python

MSAL Python is de bibliotheek die wordt gebruikt voor het aanmelden van gebruikers en de aanvraagtokens die worden gebruikt voor toegang tot een API die is beveiligd via het Microsoft-identiteitsplatform. Zoals beschreven, worden met deze snelstart tokens aangevraagd met behulp van de eigen identiteit van de toepassing in plaats van gedelegeerde machtigingen. De verificatiestroom die in dit voorbeeld wordt gebruikt, staat bekend als de oauth-stroom voor clientreferenties. Zie dit artikel voor meer informatie over het gebruik van MSAL Python met daemonapps.

U kunt MSAL Python installeren door de volgende pip-opdracht uit te voeren.

pip install msal

MSAL initialiseren

U kunt de verwijzing voor MSAL toevoegen door de volgende code toe te voegen:

import msal

Vervolgens initialiseert u MSAL met de volgende code:

app = msal.ConfidentialClientApplication(
    config["client_id"], authority=config["authority"],
    client_credential=config["secret"])
Hierin: Beschrijving
config["secret"] Het clientgeheim is dat voor de toepassing in Azure-portal wordt gemaakt.
config["client_id"] Is de Toepassings-id (client-id) voor de toepassing die is geregistreerd in de Azure-portal. U vindt deze waarde op de pagina Overzicht in de Azure-portal.
config["authority"] Het STS-eindpunt voor de gebruiker voor verificatie. Dat is meestal https://login.microsoftonline.com/{tenant} voor de openbare cloud, waarbij {tenant} de naam van uw tenant of uw tenant-id is.

Zie de naslagdocumentatie voor ConfidentialClientApplication voor meer informatie.

Tokens aanvragen

Als u een token wilt aanvragen met behulp van de identiteit van de app, gebruikt u de AcquireTokenForClient-methode:

result = None
result = app.acquire_token_silent(config["scope"], account=None)

if not result:
    logging.info("No suitable token exists in cache. Let's get a new one from Azure AD.")
    result = app.acquire_token_for_client(scopes=config["scope"])
Hierin: Beschrijving
config["scope"] De aangevraagde bereiken bevat. Voor vertrouwelijke clients moet hiervoor de indeling worden gebruikt die vergelijkbaar is met {Application ID URI}/.default om aan te geven dat de aangevraagde bereiken dezelfde zijn die statisch zijn gedefinieerd in het app-object dat is ingesteld in de Azure-portal (voor Microsoft Graph verwijst {Application ID URI} naar https://graph.microsoft.com). Voor aangepaste web-API's {Application ID URI} wordt gedefinieerd onder de sectie Een API beschikbaar maken in App-registraties in de Azure Portal.

Zie de naslagdocumentatie voor AcquireTokenForClient voor meer informatie.

Help en ondersteuning

Als u hulp nodig hebt, een probleem wilt melden of meer informatie wilt over uw ondersteuningsopties, raadpleegt u Hulp en ondersteuning voor ontwikkelaars.

Volgende stappen

Zie de landingspagina van het scenario voor meer informatie over daemontoepassingen.