Dela via


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

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.
  1. Gå till appens sida i Azure-portalenoch rulla sedan ned till gruppen Inställningar.

  2. Välj identitet.

  3. På fliken Systemtilldelat växlar du Status till och väljer sedan Spara.

    En skärmbild som visar hur du lägger till en systemtilldelad hanterad identitet i en app.

    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

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

  2. I det vänstra navigeringsfönstret väljer du Åtkomstkontroll (IAM).

  3. Välj Lägg tilloch välj sedan Lägg till rolltilldelning.

    En skärmbild som visar hur du lägger till en RBAC-roll.

  4. På fliken Roll väljer du rollen Cognitive Services OpenAI-användare.

  5. På fliken Medlemmar väljer du den hanterade identiteten.

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

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

  2. I den Program.cs filen i din app skapar du ett DefaultAzureCredential 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
        }
    );
    
  3. 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));
    
  4. 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.