Verifiëren bij Azure OpenAI vanuit een door Azure gehoste app met behulp van Microsoft Entra-id
In dit artikel wordt gedemonstreerd hoe u door Microsoft Entra ID beheerde identiteiten gebruikt en de Microsoft.Extensions.AI-bibliotheek om een door Azure gehoste app te verifiëren bij een Azure OpenAI-resource.
Met een beheerde identiteit van Microsoft Entra ID heeft uw app eenvoudig toegang tot andere met Microsoft Entra beveiligde resources, zoals Azure OpenAI. De identiteit wordt beheerd door het Azure-platform en vereist niet dat u geheimen inricht, beheert of roteert.
Voorwaarden
- Een Azure-account met een actief abonnement. Maak gratis een account.
- .NET SDK
- Een Azure OpenAI-serviceresource maken en implementeren
- Een .NET-toepassing maken en implementeren in App Service
Een beheerde identiteit toevoegen aan App Service
Beheerde identiteiten bieden een automatisch beheerde identiteit in Microsoft Entra ID voor toepassingen die kunnen worden gebruikt bij het maken van verbinding met resources die ondersteuning bieden voor Microsoft Entra-verificatie. Toepassingen kunnen beheerde identiteiten gebruiken om Microsoft Entra-tokens te verkrijgen zonder referenties te hoeven beheren. Aan uw toepassing kunnen twee typen identiteiten worden toegewezen:
- Een door het systeem toegewezen identiteit is gekoppeld aan uw toepassing en wordt verwijderd als uw app wordt verwijderd. Een app kan slechts één door het systeem toegewezen identiteit hebben.
- Een door de gebruiker toegewezen identiteit is een zelfstandige Azure-resource die kan worden toegewezen aan uw app. Een app kan meerdere door de gebruiker toegewezen identiteiten hebben.
Navigeer naar de pagina van uw app in de Azure-portalen schuif omlaag naar de instellingen groep.
Selecteer Identity.
Schakel op het tabblad Systeem dat is toegewezen, Status in op Open selecteer Opslaan.
Notitie
In de voorgaande schermopname ziet u dit proces in een Azure App Service, maar de stappen zijn vergelijkbaar op andere hosts, zoals Azure Container Apps.
Voer de opdracht az webapp identity assign
uit om een door het systeem toegewezen identiteit te maken:
az webapp identity assign --name <appName> --resource-group <groupName>
Een Azure OpenAI-gebruikersrol toevoegen aan de identiteit
Navigeer in de Azure Portalnaar het bereik waartoe u Azure OpenAI- toegang wilt verlenen. Het bereik kan een -beheergroep zijn, Abonnement, Resourcegroepof een specifieke Azure OpenAI--resource.
Selecteer in het linkernavigatiedeelvenster Toegangsbeheer (IAM).
Selecteer toevoegen en selecteer vervolgens Roltoewijzing toevoegen.
Selecteer op het tabblad Rol de rol Cognitive Services OpenAI-gebruiker.
Selecteer op het tabblad Leden de beheerde identiteit.
Selecteer op het tabblad Beoordelen + toewijzen, Beoordelen + toewijzen om de rol toe te wijzen.
U kunt de Azure CLI gebruiken om de Cognitive Services OpenAI-gebruikersrol toe te wijzen aan uw beheerde identiteit op verschillende niveaus.
az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>"
Identiteitsverificatie implementeren in uw app-code
Voeg de volgende NuGet-pakketten toe aan uw 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 voorgaande pakketten verwerken de volgende problemen voor dit scenario:
- Azure.Identity-: biedt kernfunctionaliteit voor gebruik met Microsoft Entra-id
- Azure.AI.OpenAI-: stelt uw app in staat om te interfacen met de Azure OpenAI-service
- Microsoft.Extensions.Azure: biedt helperextensies voor het registreren van services voor afhankelijkheidsinjectie
- Microsoft.Extensions.AI: biedt AI-abstracties voor algemene AI-taken
- Microsoft.Extensions.AI.OpenAI-: hiermee kunt u OpenAI-servicetypen gebruiken als AI-abstracties die worden geleverd door Microsoft.Extensions.AI
Maak in het
Program.cs
-bestand van uw app eenDefaultAzureCredential
-object om beschikbare referenties te detecteren en te configureren:// 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 } );
Maak een AI-service en registreer deze bij de serviceverzameling:
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));
Injecteer de geregistreerde service voor gebruik in uw eindpunten:
app.MapGet("/test-prompt", async (IChatClient chatClient) => { return await chatClient.CompleteAsync("Test prompt", new ChatOptions()); }) .WithName("Test prompt");
Tip
Kom meer te weten over ASP.NET Core-afhankelijkheidsinjectie en hoe u andere AI-servicetypes kunt registreren in de Azure SDK voor .NET afhankelijkheidsinjectie documentatie.