Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med Microsofts autentiseringsbibliotek (MSAL) för Python-biblioteket kan du logga in användare eller appar med Microsoft identiteter (Microsoft Entra ID, Microsoft-konton och Microsoft Entra ID konton). Med hjälp av MSAL Python kan du hämta token från Microsoft Entra ID för att anropa skyddade webb-API:er, till exempel Microsoft Graph, andra Microsoft API:er eller dina egna API:er.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Skapa ett kostnadsfritt konto.
- Python 3,6+.
Installera paketet
Installera MSAL för Python-paketet. Du hittar MSAL-Python på PyPI.
pip install msal
Identitetsbegrepp
MSAL Python är en del av Microsofts identitetsplattform ekosystemet. Bekanta dig med följande begrepp för att effektivt använda MSAL-Python för att skydda dina program och API:er:
- Identitets- och åtkomsthantering
- Autentisering och auktorisering
- OAuth 2.0 och OpenID Connect (OIDC) i Microsofts identitetsplattform
- Konfidentiella och offentliga klientkonton i Microsofts identitetsplattform
- Säkerhetstoken
Användningsscenarier
Om du vill använda MSAL Python registrerar du ett program med Microsofts identitetsplattform. Du behöver ett Azure konto med en aktiv prenumeration. Skapa ett kostnadsfritt konto om du inte har något. Du kan registrera din app i en kundklientorganisation eller personalklientorganisation.
Program kan använda MSAL-Python för att hämta token för åtkomst till skyddade API:er. Olika apptyper hämtar token med olika autentiseringsflöden. De apptyper som stöds är skrivbordsprogram, webbprogram, webb-API:er och program som körs på enheter som inte har någon webbläsare (till exempel IoT-enheter).
I MSAL Python kategoriseras program enligt följande:
- Offentliga klientprogram (stationära och mobila). Dessa typer av appar kan inte lagra apphemligheter på ett säkert sätt.
- Konfidentiella klientprogram (webbappar, webb-API:er och daemonprogram). Den här typen av appar lagrar säkert en hemlighet som registrerats med Microsoft Entra ID.
Mer information finns i dokumentationen om offentliga klientappar och konfidentiella klientappar samt de olika apptyperna och deras autentiseringsflöden i Microsofts identitetsplattform.
När du har fastställt om ditt program är ett offentligt eller konfidentiellt klientprogram kan du använda MSAL Python för att hämta token för olika scenarier.
Grundläggande användning
Hämtning av token med MSAL Python följer ett trestegsmönster. Det kommer att finnas vissa variationer för olika flöden. Om du vill se dem i praktiken kan du ladda ned våra exempel.
MSAL förlitar sig på en ren separation mellan offentliga klientprogram och konfidentiella klientprogram. Skapa därför antingen en
PublicClientApplicationeller enConfidentialClientApplicationinstans och återanvänd den under programmets livscykel. För ett offentligt klientprogram kan till exempel initieringskoden se ut så här:from msal import PublicClientApplication app = PublicClientApplication( "your_client_id", authority="https://login.microsoftonline.com/common")Auktoritetsvärdet varierar beroende på vilken typ av konto du loggar in med och vilken typ av klientorganisation din app är registrerad i. Om du till exempel vill logga in med både arbetskonton och personliga Microsoft-konton som har etablerats i arbetsstyrkeklientorganisationer (Microsoft Entra ID) använder du
https://login.microsoftonline.com/common. För kundkonton som har etablerats i kunders klientorganisationer kommer din auktoritet att ha en form somhttps://<subdomain>.ciamlogin.com. Mer information finns i dokumentationen för token utfärdare.Prova att hämta token från cachen först. API-modellen i MSAL ger dig explicit kontroll över hur du använder tokencachen. Även om cachelagringsdelen är tekniskt valfri rekommenderar vi starkt att du använder den i ditt program. Med cacheminnet kan du se till att du inte gör några extra API-anrop och hanterar tokenuppdateringen automatiskt.
# initialize result variable to hole the token response result = None # We now check the cache to see # whether we already have some accounts that the end user already used to sign in before. accounts = app.get_accounts() if accounts: # If so, you could then somehow display these accounts and let end user choose print("Pick the account you want to use to proceed:") for a in accounts: print(a["username"]) # Assuming the end user chose this one chosen = accounts[0] # Now let's try to find a token in cache for this account result = app.acquire_token_silent(["User.Read"], account=chosen)Om det inte finns någon lämplig token i cacheminnet eller om du valde att hoppa över föregående steg skickar du en begäran till Microsoft Entra ID för att hämta en token. Det finns olika metoder baserat på din klienttyp och ditt scenario, men i det här exemplet visar vi hur du använder
acquire_token_interactive, vilket uppmanar användaren att ange sina autentiseringsuppgifter.if not result: # So no suitable token exists in cache. Let's get a new one from Azure AD. result = app.acquire_token_interactive(scopes=["User.Read"]) if "access_token" in result: print(result["access_token"]) # Yay! else: print(result.get("error")) print(result.get("error_description")) print(result.get("correlation_id")) # You may need this when reporting a bugSpara koden i en Python fil lokalt, till exempel msaltest.py.
Kör koden genom att köra
python .\msalpytest.py. Följande visuella objekt visar inloggningsupplevelsen för det här exemplet.
När autentiseringen är klar och du har stängt webbläsaren bör du kunna se åtkomsttoken som skrivs ut i terminalen.
Metodtips för ett robust företagsklart program
Du kan hämta en token för ett skyddat webb-API med hjälp av MSAL Python. Du behöver inte heller hantera uppdateringstoken själv. Men för att skapa robusta, företagsklara program måste du göra lite mer. Du vill till exempel:
Hantera undantag, både när du hämtar en token, men även när du anropar det skyddade webb-API:et. I synnerhet om ditt program körs i en Microsoft Entra klientorganisation där klientadministratörerna har angett principer för villkorsstyrd åtkomst för att framtvinga multifaktorautentisering (MFA) måste du hantera en anspråksutmaning.
Du kanske vill aktivera loggning för att felsöka ditt program och hjälpa dina användare, samtidigt som de respekterar deras sekretess och är kompatibla med GDPR.
Samples
Det finns flera exempel som du kan använda för att komma igång med MSAL Python.
- Exempel från bibliotekslagringsplatsen. De här exemplen visar de olika konfigurationer och autentiseringsflöden som du implementerar med hjälp av MSAL Python.
- En enda lagringsplats med exempel som används i vår dokumentation. De här exemplen har stöddokumentation som hjälper dig att skapa och replikera dem från grunden.
References
Se även
- Instansiera ditt program med HJÄLP av MSAL Python
- Hämta token med MSAL-Python