Sdílet prostřednictvím


Ověřování pro Azure OpenAI z hostované aplikace Azure pomocí ID Microsoft Entra

Tento článek ukazuje, jak používat spravované identity Microsoft Entra ID a knihovnu Microsoft.Extensions.AI k ověření aplikace hostované v Azure pro prostředek Azure OpenAI.

Spravovaná identita z Microsoft Entra ID umožňuje vaší aplikaci snadno přistupovat k dalším prostředkům chráněným Microsoft Entra, jako je Azure OpenAI. Identita je spravovaná platformou Azure a nevyžaduje zřízení, správu ani měnění tajemství.

Požadavky

Přidání spravované identity do služby App Service

Spravované identity poskytují automaticky spravovanou identitu v Microsoft Entra ID pro aplikace, které se mají použít při připojování k prostředkům, které podporují ověřování Microsoft Entra. Aplikace můžou používat spravované identity k získání tokenů Microsoft Entra, aniž by musely spravovat jakékoli přihlašovací údaje. Aplikaci je možné přiřadit dva typy identit:

  • identita přiřazená systémem je propojena s vaší aplikací a je zrušena, pokud je vaše aplikace odstraněna. Aplikace může mít pouze jednu identitu přiřazenou systémem.
  • identita přiřazená uživatelem je samostatný prostředek Azure, který lze přiřadit vaší aplikaci. Aplikace může mít více identit přiřazených uživatelem.
  1. Přejděte na stránku aplikace na webu Azure Portala posuňte se dolů ke skupině Nastavení.

  2. Vyberte identitu.

  3. Na kartě Systémově přiřazená přepněte Stav na Zapnutoa poté vyberte Uložit.

    snímek obrazovky znázorňující, jak do aplikace přidat spravovanou identitu přiřazenou systémem.

    Poznámka

    Předchozí snímek obrazovky ukazuje tento proces ve službě Azure App Service, ale postup je podobný na jiných hostitelích, jako je Azure Container Apps.

Spuštěním příkazu az webapp identity assign vytvořte identitu přiřazenou systémem:

az webapp identity assign --name <appName> --resource-group <groupName>

Přidání role uživatele Azure OpenAI do identity

  1. Na webu Azure Portalpřejděte do oboru, ke kterému chcete udělit přístup Azure OpenAI. Oborem může být skupina pro správu , předplatné , skupina prostředků nebo konkrétní prostředek Azure OpenAI .

  2. V levém navigačním podokně vyberte Řízení přístupu (IAM).

  3. Vyberte Přidata pak vyberte Přidat přiřazení role.

    snímek obrazovky znázorňující, jak přidat roli RBAC

  4. Na kartě Role vyberte roli uživatel služby Cognitive Services OpenAI.

  5. Na kartě Členové vyberte spravovanou identitu.

  6. Na kartě Zkontrolovat a přiřadit vyberte Zkontrolovat a přiřadit pro přiřazení role.

Pomocí Azure CLI můžete přiřadit roli uživatele OpenAI služeb Cognitive Services spravované identitě v různých oborech.

az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>"

Implementace ověřování identit v kódu aplikace

  1. Do aplikace přidejte následující balíčky NuGet:

    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
    

    Předchozí balíčky pro tento scénář zpracují následující aspekty:

  2. V souboru Program.cs vaší aplikace vytvořte objekt DefaultAzureCredential ke zjišťování a konfiguraci dostupných přihlašovacích údajů:

    // 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. Vytvořte službu AI a zaregistrujte ji v kolekci služeb:

    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. Vložte registrovanou službu, abyste ji mohli použít ve svých koncových bodech.

    app.MapGet("/test-prompt", async (IChatClient chatClient) =>
    {
        return await chatClient.GetResponseAsync("Test prompt", new ChatOptions());
    })
    .WithName("Test prompt");
    

    Spropitné

    Přečtěte si více o vkládání závislostí v ASP.NET Core a o tom, jak registrovat další typy služeb umělé inteligence v sadě Azure SDK pro .NET v dokumentaci k vkládání závislostí.