Snabbstart: Hämta en token och anropa Microsoft Graph från en Python-daemonapp
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:
Registrera och ladda ned snabbstartsappen
Steg 1: Registrera din app
Dricks
Stegen i den här artikeln kan variera något beroende på vilken portal du börjar från.
Du registrerar programmet och lägger till appens registreringsinformationen i lösningen manuellt med hjälp av följande steg:
- Logga in på administrationscentret för Microsoft Entra.
- Om du har åtkomst till flera klienter använder du ikonen Inställningar på den översta menyn för att växla till den klientorganisation där du vill registrera programmet från menyn Kataloger + prenumerationer.
- Bläddra till Identitetsprogram>> Appregistreringar och välj Ny registrering.
- Ange ett namn för ditt program, till exempel
Daemon-console
. Användare av din app kan se det här namnet och du kan ändra det senare. - Välj Registrera.
- Under Hantera väljer du Certifikat och hemligheter.
- Under Klienthemligheter väljer du Ny klienthemlighet, anger ett namn och väljer sedan Lägg till. Registrera det hemliga värdet på en säker plats för användning i ett senare steg.
- Under Hantera väljer du API-behörigheter>Lägg till en behörighet. Välj Microsoft Graph.
- Välj Programbehörigheter.
- Under Användarnod väljer du User.Read.All och sedan Lägg till behörigheter.
Steg 2: Ladda ned Python-projektet
Ladda ned Python-daemonprojektet
Steg 3: Konfigurera Python-projektet
Extrahera zip-filen i en lokal mapp nära diskens rot, till exempel C:\Azure-Samples.
Gå till undermappen 1-Call-MsGraph-WithSecret.
Redigera parameters.json och ersätt värdena för fälten
authority
,client_id
ochsecret
med följande kodfragment:"authority": "https://login.microsoftonline.com/Enter_the_Tenant_Id_Here", "client_id": "Enter_the_Application_Id_Here", "secret": "Enter_the_Client_Secret_Here"
Där:
Enter_the_Application_Id_Here
– är program-ID (klient) för programmet som du har registrerat.Enter_the_Tenant_Id_Here
– ersätt det här värdet med klient-ID eller klientnamn (t.ex. contoso.microsoft.com)Enter_the_Client_Secret_Here
– ersätt det här värdet med klienthemligheten som skapades i steg 1.
Dricks
Om du vill hitta värdena för program-ID(klient)-ID, katalog-ID (klientorganisation) går du till appens översiktssida i administrationscentret för Microsoft Entra. Generera en ny nyckel genom att gå till sidan Certifikat och hemligheter.
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
Där:
Enter_the_Tenant_Id_Here
– ersätt det här värdet med klient-ID eller klientnamn (t.ex. contoso.microsoft.com)Enter_the_Application_Id_Here
– är program-ID :t (klient) för det program som du registrerade tidigare.
Steg 5: Köra appen
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"] |
Har klienthemligheten skapats för programmet i administrationscentret för Microsoft Entra. |
config["client_id"] |
Är program-ID :t (klient) för programmet som registrerats i administrationscentret för Microsoft Entra. Du hittar det här värdet på appens översiktssida i administrationscentret för Microsoft Entra. |
config["authority"] |
STS-slutpunkten för autentisering av användaren. Vanligtvis https://login.microsoftonline.com/{tenant} för offentliga moln, där {tenant} är namnet på din klientorganisation eller ditt klient-ID. |
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 AAD.")
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 administrationscentret för Microsoft Entra (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 administrationscentret för Microsoft Entra. |
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.