Quickstart: Een token verkrijgen en Microsoft Graph aanroepen vanuit een Python-daemon-app
In deze quickstart downloadt en voert u een codevoorbeeld uit dat laat zien hoe een Python-toepassing een toegangstoken kan ophalen met behulp van de identiteit van de app om de Microsoft Graph API aan te roepen en een lijst met gebruikers in de map weer te geven. In het codevoorbeeld ziet u hoe een taak zonder toezicht of Windows-service kan worden uitgevoerd met een toepassingsidentiteit in plaats van de identiteit van een gebruiker.
Voorwaarden
Als u dit voorbeeld wilt uitvoeren, hebt u het volgende nodig:
Uw quickstart-app registreren en downloaden
Stap 1: Uw toepassing registreren
Fooi
Stappen in dit artikel kunnen enigszins variëren op basis van de portal waaruit u begint.
Voer de volgende stappen uit om uw toepassing te registreren en de registratiegegevens van de app handmatig toe te voegen aan uw oplossing:
- Meld u aan bij het Microsoft Entra-beheercentrum.
- Als u toegang hebt tot meerdere tenants, gebruikt u het pictogram Instellingen in het bovenste menu om over te schakelen naar de tenant waarin u de toepassing wilt registreren in het menu Mappen en abonnementen.
- Blader naar Identiteitstoepassingen>> App-registraties en selecteer Nieuwe registratie.
- Voer bijvoorbeeld
Daemon-console
een naam in voor uw toepassing. Gebruikers van uw app zien deze naam mogelijk en u kunt deze later wijzigen. - Selecteer Registreren.
- Selecteer onder Beheren de optie Certificaten en geheimen.
- Selecteer onder Clientgeheimen het nieuwe clientgeheim, voer een naam in en selecteer vervolgens Toevoegen. Noteer de geheime waarde op een veilige locatie voor gebruik in een latere stap.
- Selecteer onder Beheren DE API-machtigingen>een machtiging toevoegen. Selecteer Microsoft Graph.
- Selecteer Toepassingsmachtigingen.
- Selecteer onder Het knooppunt Gebruiker de optie User.Read.All en selecteer vervolgens Machtigingen toevoegen.
Stap 2: Het Python-project downloaden
Het Python-daemon-project downloaden
Stap 3: Het Python-project configureren
Pak het zip-bestand uit in een lokale map dicht bij de hoofdmap van de schijf, bijvoorbeeld C:\Azure-Samples.
Navigeer naar de submap 1-Call-MsGraph-WithSecret.
Bewerk parameters.json en vervang de waarden van de velden
authority
client_id
ensecret
door het volgende fragment:"authority": "https://login.microsoftonline.com/Enter_the_Tenant_Id_Here", "client_id": "Enter_the_Application_Id_Here", "secret": "Enter_the_Client_Secret_Here"
Waar:
Enter_the_Application_Id_Here
- is de toepassings-id (client) voor de toepassing die u hebt geregistreerd.Enter_the_Tenant_Id_Here
- vervang deze waarde door de tenant-id of tenantnaam (bijvoorbeeld contoso.microsoft.com)Enter_the_Client_Secret_Here
- vervang deze waarde door het clientgeheim dat is gemaakt in stap 1.
Fooi
Ga naar de pagina Overzicht van de app in het Microsoft Entra-beheercentrum om de waarden van de toepassings-id (client-id, map-id) (tenant) te vinden. Als u een nieuwe sleutel wilt genereren, gaat u naar de pagina Certificaten en geheimen .
Standaardgebruiker
Als u een standaardgebruiker van uw tenant bent, vraagt u een globale beheerder om beheerderstoestemming te verlenen voor uw toepassing. Hiertoe geeft u de volgende URL aan uw beheerder:
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
Waar:
Enter_the_Tenant_Id_Here
- vervang deze waarde door de tenant-id of tenantnaam (bijvoorbeeld contoso.microsoft.com)Enter_the_Application_Id_Here
- is de toepassings-id (client) voor de toepassing die u eerder hebt geregistreerd.
Stap 5: De toepassing uitvoeren
U moet de afhankelijkheden van dit voorbeeld eenmaal installeren.
pip install -r requirements.txt
Voer vervolgens 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
In deze quickstart-toepassing wordt een clientgeheim gebruikt om zichzelf als vertrouwelijke client te identificeren. Omdat het clientgeheim wordt toegevoegd als tekst zonder opmaak aan uw projectbestanden, is het raadzaam om veiligheidsredenen een certificaat te gebruiken in plaats van een clientgeheim voordat u de toepassing als productietoepassing overweegt. Zie deze instructies in dezelfde GitHub-opslagplaats voor dit voorbeeld voor meer informatie over het gebruik van een certificaat, maar in de tweede map 2-Call-MsGraph-WithCertificate.
Meer informatie
MSAL Python
MSAL Python is de bibliotheek die wordt gebruikt om gebruikers aan te melden en tokens aan te vragen die worden gebruikt voor toegang tot een API die wordt beveiligd door het Microsoft Identity Platform. Zoals beschreven, vraagt deze quickstart tokens aan met behulp van de eigen identiteit van de toepassing in plaats van gedelegeerde machtigingen. De verificatiestroom die in dit geval wordt gebruikt, wordt de oauth-stroom voor clientreferenties genoemd. Zie dit artikel voor meer informatie over het gebruik van MSAL Python met daemon-apps.
U kunt MSAL Python installeren door de volgende pip-opdracht uit te voeren.
pip install msal
MSAL-initialisatie
U kunt de verwijzing voor MSAL toevoegen door de volgende code toe te voegen:
import msal
Initialiseer vervolgens MSAL met behulp van de volgende code:
app = msal.ConfidentialClientApplication(
config["client_id"], authority=config["authority"],
client_credential=config["secret"])
Waar: | Beschrijving |
---|---|
config["secret"] |
Is het clientgeheim dat is gemaakt voor de toepassing in het Microsoft Entra-beheercentrum. |
config["client_id"] |
Is de toepassings-id (client) voor de toepassing die is geregistreerd in het Microsoft Entra-beheercentrum. U vindt deze waarde op de overzichtspagina van de app in het Microsoft Entra-beheercentrum. |
config["authority"] |
Het STS-eindpunt dat de gebruiker moet verifiëren. Meestal https://login.microsoftonline.com/{tenant} voor openbare cloud, waarbij {tenant} de naam is van uw tenant of uw tenant-id. |
Raadpleeg de referentiedocumentatie voor meer informatie.ConfidentialClientApplication
Tokens aanvragen
Als u een token wilt aanvragen met behulp van de identiteit van de app, gebruikt u de volgende 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 AAD.")
result = app.acquire_token_for_client(scopes=config["scope"])
Waar: | Beschrijving |
---|---|
config["scope"] |
Bevat de aangevraagde bereiken. Voor vertrouwelijke clients moet dit de indeling gebruiken die vergelijkbaar is met {Application ID URI}/.default het aangeven dat de bereiken die worden aangevraagd de bereiken zijn die statisch zijn gedefinieerd in het app-object dat is ingesteld in het Microsoft Entra-beheercentrum (voor Microsoft Graph, {Application ID URI} verwijst 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 het Microsoft Entra-beheercentrum. |
Raadpleeg de referentiedocumentatie voor meer informatie.AcquireTokenForClient
Help en ondersteuning
Als u hulp nodig hebt, een probleem wilt melden of meer wilt weten over uw ondersteuningsopties, raadpleegt u Help en ondersteuning voor ontwikkelaars.
Volgende stappen
Zie de landingspagina voor scenario's voor meer informatie over daemon-toepassingen.