Delen via


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 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.
  1. Navigeer naar de pagina van uw app in de Azure-portalen schuif omlaag naar de instellingen groep.

  2. Selecteer Identity.

  3. Schakel op het tabblad Systeem dat is toegewezen, Status in op Open selecteer Opslaan.

    Een schermopname waarin wordt getoond hoe u een door het systeem toegewezen beheerde identiteit aan een app toevoegt.

    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

  1. 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.

  2. Selecteer in het linkernavigatiedeelvenster Toegangsbeheer (IAM).

  3. Selecteer toevoegen en selecteer vervolgens Roltoewijzing toevoegen.

    Een schermopname waarin wordt getoond hoe u een RBAC-rol toevoegt.

  4. Selecteer op het tabblad Rol de rol Cognitive Services OpenAI-gebruiker.

  5. Selecteer op het tabblad Leden de beheerde identiteit.

  6. 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

  1. 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:

  2. Maak in het Program.cs-bestand van uw app een DefaultAzureCredential-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
        }
    );
    
  3. 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));
    
  4. 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.