Autentisera dig mot Azure OpenAI från en Azure värdbaserad app med Microsoft Entra ID
Den här artikeln visar hur du använder Microsoft Entra ID-hanterade identiteter och Microsoft.Extensions.AI-biblioteket för att autentisera en app som är värd i Azure till en Azure OpenAI-resurs.
Med en hanterad identitet från Microsoft Entra-ID kan din app enkelt komma åt andra Microsoft Entra-skyddade resurser, till exempel Azure OpenAI. Identiteten hanteras av Azure-plattformen och kräver inte att du etablerar, hanterar eller roterar några hemligheter.
Förutsättningar
- Ett Azure-konto som har en aktiv prenumeration. Skapa ett konto kostnadsfritt.
- .NET SDK
- Skapa och distribuera en Azure OpenAI Service-resurs
- Skapa och distribuera ett .NET-program till App Service
Lägga till en hanterad identitet i App Service
Hanterade identiteter tillhandahåller en automatiskt hanterad identitet i Microsoft Entra-ID för program som ska användas vid anslutning till resurser som stöder Microsoft Entra-autentisering. Program kan använda hanterade identiteter för att hämta Microsoft Entra-token utan att behöva hantera några autentiseringsuppgifter. Din applikation kan tilldelas två typer av identiteter:
- En systemtilldelad identitet är kopplad till ditt program och tas bort om appen tas bort. En app kan bara ha en systemtilldelad identitet.
- En användartilldelad identitet är en fristående Azure-resurs som kan tilldelas till din app. En app kan ha flera användartilldelade identiteter.
Gå till appens sida i Azure-portalenoch rulla sedan ned till gruppen Inställningar.
Välj identitet.
På fliken Systemtilldelat växlar du Status till Påoch väljer sedan Spara.
Notera
Föregående skärmbild visar den här processen i en Azure App Service, men stegen liknar andra värdar, till exempel Azure Container Apps.
Kör kommandot az webapp identity assign
för att skapa en systemtilldelad identitet:
az webapp identity assign --name <appName> --resource-group <groupName>
Lägga till en Azure OpenAI-användarroll i identiteten
I Azure-portalennavigerar du till det omfång som du vill bevilja Azure OpenAI- åtkomst till. Omfånget kan vara en hanteringsgrupp, Prenumeration, resursgruppeller en specifik Azure OpenAI- resurs.
I det vänstra navigeringsfönstret väljer du Åtkomstkontroll (IAM).
Välj Lägg tilloch välj sedan Lägg till rolltilldelning.
På fliken Roll väljer du rollen Cognitive Services OpenAI-användare.
På fliken Medlemmar väljer du den hanterade identiteten.
På fliken Granska + tilldela väljer du Granska + tilldela för att tilldela rollen.
Du kan använda Azure CLI för att tilldela rollen Cognitive Services OpenAI-användare till din hanterade identitet i olika omfattningar.
az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>"
Implementera identitetsautentisering i din appkod
Lägg till följande NuGet-paket i din app:
dotnet add package Azure.Identity dotnet add package Azure.AI.OpenAI dotnet add package Microsoft.Extensions.Azure dotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI
De föregående paketen hanterar följande problem för det här scenariot:
- Azure.Identity: Tillhandahåller grundläggande funktioner för att arbeta med Microsoft Entra-ID
- Azure.AI.OpenAI: Gör att appen kan interagera med Azure OpenAI-tjänsten
- Microsoft.Extensions.Azure: Tillhandahåller tillägg för att registrera tjänster för beroendeinjektion
- Microsoft.Extensions.AI: Tillhandahåller AI-abstraktioner för vanliga AI-uppgifter
- Microsoft.Extensions.AI.OpenAI: Gör att du kan använda OpenAI-tjänsttyper som AI-abstraktioner som tillhandahålls av Microsoft.Extensions.AI
I den
Program.cs
filen i din app skapar du ettDefaultAzureCredential
objekt för att identifiera och konfigurera tillgängliga autentiseringsuppgifter:// For example, will discover Visual Studio or Azure CLI credentials // in local environments and managed identity credentials in production deployments var credential = new DefaultAzureCredential( new DefaultAzureCredentialOptions { // If necessary, specify the tenant ID, // user-assigned identity client or resource ID, or other options } );
Skapa en AI-tjänst och registrera den med tjänstsamlingen:
string endpoint = builder.Configuration["AZURE_OPENAI_ENDPOINT"]; string deployment = builder.Configuration["AZURE_OPENAI_GPT_NAME"]; builder.Services.AddChatClient( new AzureOpenAIClient(new Uri(endpoint), credential) .AsChatClient(deployment));
Mata in den registrerade tjänsten för användning i dina slutpunkter:
app.MapGet("/test-prompt", async (IChatClient chatClient) => { return await chatClient.CompleteAsync("Test prompt", new ChatOptions()); }) .WithName("Test prompt");
Tips
Läs mer om ASP.NET Core-beroendeinjektion och hur du registrerar andra typer av AI-tjänster i Azure SDK för .NET beroendeinjektion dokumentation.