Dela via


Snabbstart: Hämta en token och anropa Microsoft Graph API från en Python-konsolapp med hjälp av appens identitet

Välkommen! Det här är förmodligen inte den sida du förväntade dig. När vi arbetar med en korrigering bör den här länken ta dig till rätt artikel:

Snabbstart: Hämta en token och anropa Microsoft Graph från en Python-daemonapp

Vi ber om ursäkt för besväret och uppskattar ditt tålamod medan vi arbetar för att få detta löst.

I den här snabbstarten laddar du ned och kör ett kodexempel som visar hur ett Python-program kan hämta en åtkomsttoken med hjälp av appens identitet för att anropa Microsoft Graph API och visa en lista över användare i katalogen. Kodexemplet visar hur ett obevakat jobb eller En Windows-tjänst kan köras med en programidentitet i stället för en användares identitet.

Förutsättningar

Om du vill köra det här exemplet behöver du:

Ladda ned och konfigurera snabbstartsappen

Steg 1: Konfigurera din app i Azure-portalen

För att kodexemplet i den här snabbstarten ska fungera skapar du en klienthemlighet och lägger till Graph API:ets user.Read.All-programbehörighet .

Redan konfigurerad Programmet har konfigurerats med dessa attribut.

Steg 2: Ladda ned Python-projektet

Kommentar

Enter_the_Supported_Account_Info_Here

Standardanvändare

Om du är en standardanvändare av din klientorganisation ber du en global administratör att bevilja administratörsmedgivande för ditt program. Gör detta genom att ge följande URL till administratören:

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

Steg 4: Kör programmet

Du måste installera beroendena för det här exemplet en gång.

pip install -r requirements.txt

Kör sedan programmet via kommandotolken eller konsolen:

python confidential_client_secret_sample.py parameters.json

I konsolen bör du se ett Json-fragment som representerar en lista över användare i din Microsoft Entra-katalog.

Viktigt!

Det här snabbstartsprogrammet använder en klienthemlighet för att identifiera sig som en konfidentiell klient. Eftersom klienthemligheten läggs till som oformaterad text till dina projektfiler rekommenderar vi att du av säkerhetsskäl använder ett certifikat i stället för en klienthemlighet innan programmet används som produktionsprogram. Mer information om hur du använder ett certifikat finns i de här anvisningarna på samma GitHub-lagringsplats för det här exemplet, men i den andra mappen 2-Call-MsGraph-WithCertificate.

Mer information

MSAL Python

MSAL Python är det bibliotek som används för att logga in användare och begära token som används för att komma åt ett API som skyddas av Microsofts identitetsplattform. Enligt beskrivningen begär den här snabbstarten token med hjälp av programmets egen identitet i stället för delegerade behörigheter. Autentiseringsflödet som används i det här fallet kallas för oauth-flöde för klientautentiseringsuppgifter. Mer information om hur du använder MSAL Python med daemon-appar finns i den här artikeln.

Du kan installera MSAL Python genom att köra följande pip-kommando.

pip install msal

MSAL-initiering

Du kan lägga till referensen för MSAL genom att lägga till följande kod:

import msal

Initiera sedan MSAL med hjälp av följande kod:

app = msal.ConfidentialClientApplication(
    config["client_id"], authority=config["authority"],
    client_credential=config["secret"])
Där: beskrivning
config["secret"] Skapas klienthemligheten för programmet i Azure Portal.
config["client_id"] Är Program-ID (klient) för det program som registrerats på Azure-portalen. Du hittar det här värdet på appens översiktssida på Azure-portalen.
config["authority"] STS-slutpunkten för autentisering av användaren. Vanligtvis https://login.microsoftonline.com/{tenant} för offentligt moln, där {klient} är namnet på klientorganisationen eller klient-ID:t.

Mer information finns i referensdokumentationen för ConfidentialClientApplication.

Begära token

Om du vill begära en token med appens identitet använder du metoden AcquireTokenForClient:

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"])
Där: beskrivning
config["scope"] Innehåller omfattningarna som begärdes. För konfidentiella klienter bör detta använda formatet som liknar för att {Application ID URI}/.default indikera att de omfång som begärs är de som statiskt definieras i appobjektet som anges i Azure Portal (för Microsoft Graph {Application ID URI} pekar på https://graph.microsoft.com). För anpassade webb-API:er {Application ID URI} definieras under avsnittet Exponera ett API i Appregistreringar i Azure Portal.

Mer information finns i referensdokumentationen för AcquireTokenForClient.

Hjälp och support

Om du behöver hjälp, vill rapportera ett problem eller vill lära dig mer om dina supportalternativ kan du läsa Hjälp och support för utvecklare.

Nästa steg

Mer information om daemonprogram finns på landningssidan för scenariot.