De flesta Azure OpenAI-handledningar börjar på samma sätt: hämta en API-nyckel från Azure-portalen, klistra in den i en miljövariabel och skicka den till SDK:t. Det fungerar, men det betyder att du har en hemlighet i din deployment-konfiguration som kan läcka, committas eller bli inaktuell.
Det identitetsbaserade tillvägagångssättet använder Entra ID-tokens istället. Din applikation bevisar vem den är genom en hanterad identitet (i Azure) eller din lokala Azure CLI-session (under utveckling), och SDK:t hanterar token-livscykeln automatiskt. Inga nycklar någonstans.
Det här inlägget visar båda tillvägagångssätten sida vid sida i Python och TypeScript så att du ser exakt vad som ändras.
DefaultAzureCredential är en autentiseringskedja från Azure Identity-biblioteket. Den provar flera autentiseringsmetoder i ordning och använder den första som lyckas:
Det innebär att samma kod fungerar lokalt (via din Azure CLI-inloggning) och i produktion (via den hanterade identiteten på din beräkningsresurs). Ingen if-else-logik, ingen miljöspecifik hantering av autentiseringsuppgifter.
Installera först de nödvändiga paketen:
Så här ser API-nyckelautentisering ut:
Och här är samma sak med hanterad identitet:
Den avgörande skillnaden: istället för att skicka api_key skickar du azure_ad_token_provider. Funktionen get_bearer_token_provider skapar en callable som DefaultAzureCredential använder för att hämta och förnya tokens automatiskt. Scope:t https://cognitiveservices.azure.com/.default talar om för Entra ID vilket API du begär åtkomst till.
Installera paketen:
API-nyckelmetoden:
Hanterad identitet-metoden:
Samma mönster som Python: byt ut apiKey mot azureADTokenProvider. Autentiseringskedjan hanterar resten.
DefaultAzureCredential fungerar lokalt via din Azure CLI-session. Se till att du är inloggad och att ditt konto har rollen Cognitive Services OpenAI User på målresursen:
När du driftsätter till Azure med en hanterad identitet som har samma rolltilldelning fungerar koden utan ändringar. DefaultAzureCredential plockar automatiskt upp den hanterade identiteten istället för Azure CLI.
Fel scope. Scope:t måste vara https://cognitiveservices.azure.com/.default för alla Cognitive Services. Fel scope returnerar 401 även om rolltilldelningen är korrekt.
Saknad rolltilldelning. Den hanterade identiteten (eller ditt användarkonto) behöver rollen Cognitive Services OpenAI User på den specifika OpenAI-resursen. Reader eller Contributor på prenumerationsnivå räcker inte.
Fördröjning vid rollpropagering. Efter att en rolltilldelning skapats kan det ta upp till 10 minuter innan den propagerar. Om du får 403 direkt efter rolltilldelningen, vänta några minuter och försök igen.
DefaultAzureCredential i containers. Om du kör i en Docker-container lokalt är Azure CLI-uppgifterna inte tillgängliga inuti containern som standard. Använd miljövariabler med en service principal, eller montera Azure CLI:s token-cache.
För mer detaljer, se Azure OpenAI Python-snabbstart och DefaultAzureCredential-dokumentationen.