Nyckellösa autentiseringsmetoder
I nyckellös autentisering för att Azure OpenAI för JavaScript använder du en hanterad identitet (för Azure värdbaserad kod) eller utvecklarens Microsoft Entra ID identitet (för lokal utveckling) för att autentisera i stället för att hårdkoda API-nycklar. Detta görs via DefaultAzureCredential klassen eller ManagedIdentityCredential från @azure/identity biblioteket, vilket ger ett säkert sätt att hämta de ägartoken som behövs för att autentisera till Azure tjänster. Så här fungerar det i praktiken:
- Konfigurera den Azure miljön. Kontrollera att din Azure OpenAI-resurs har skapats och att utvecklaridentiteten (för lokal utveckling) eller den hanterade identiteten (för Azure värdbaserad kod) beviljas en Azure OpenAI RBAC-roll (till exempel Cognitive Services OpenAI-användare) på resursen.
- Initiera autentiseringsuppgifter. Använd klassen
DefaultAzureCredentialeller klassenManagedIdentityCredentialfrån@azure/identityför att få en token automatiskt. - Skapa klientinstansen. Instansiera
AzureOpenAIfrån paketetopenaimedendpoint,deployment,apiVersionoch tokentillhandahållaren som returneras avgetBearerTokenProvider. - Gör API-anrop. Använd klienten (till exempel
client.chat.completions.create) för att interagera med Azure OpenAI på ett säkert sätt, utan att hantera hemligheter i kod.
Följande exempel visar alla fyra stegen tillsammans:
import { AzureOpenAI } from 'openai';
import { getBearerTokenProvider, DefaultAzureCredential } from '@azure/identity';
// Set AZURE_OPENAI_ENDPOINT to the endpoint of your Azure OpenAI resource,
// for example: https://YOUR-RESOURCE-NAME.openai.azure.com/
const endpoint = process.env.AZURE_OPENAI_ENDPOINT;
if (!endpoint) {
throw new Error("Set the AZURE_OPENAI_ENDPOINT environment variable to your Azure OpenAI resource endpoint.");
}
const deployment = '<your Azure OpenAI deployment name>';
const apiVersion = '2024-10-21';
const credential = new DefaultAzureCredential();
const scope = 'https://cognitiveservices.azure.com/.default';
const azureADTokenProvider = getBearerTokenProvider(credential, scope);
// Create an Azure OpenAI client.
const client = new AzureOpenAI({ azureADTokenProvider, endpoint, deployment, apiVersion });
// Call the chat completions API. In the Azure OpenAI client, `model` is the
// name of the deployment, not the underlying model name.
const result = await client.chat.completions.create({
model: deployment,
messages: [{ role: 'user', content: 'Say hello!' }],
});
console.log(result.choices[0].message?.content);
Lokal utveckling jämfört med Azure värdbaserad körning
DefaultAzureCredentialär utformad för att fungera både i lokal utveckling och i Azure miljöer. Autentiseringsuppgifterna provar en kedja av typer av autentiseringsuppgifter tills en lyckas:
-
Lokal utveckling: Den hämtar den inloggade utvecklarens identitet genom autentiseringsuppgifter som
AzureCliCredential(efteraz login),AzurePowerShellCredentialoch autentiseringsuppgifter från IDE-program som stöds. Utvecklaridentiteten måste beviljas en Azure OpenAI RBAC-roll på målresursen. -
Azure värdbaserade miljöer: När samma kod körs på resurser som Azure App Service, Azure Functions, Azure Container Apps eller Azure Virtual Machines används
DefaultAzureCredentialManagedIdentityCredentialför att hämta en token för den hanterade identitet som tilldelats resursen. Den hanterade identiteten måste tilldelas en Azure OpenAI RBAC-roll för målresursen.
För en användartilldelad hanterad identitet anger du AZURE_CLIENT_ID miljövariabeln (eller skickar managedIdentityClientId in alternativen för autentiseringsuppgifter) till klient-ID:t för den användartilldelade identiteten. En systemtilldelad hanterad identitet kräver inget klient-ID. på en Azure värdbaserad resurs räcker det med parameterlösnew DefaultAzureCredential().