Condividi tramite


Eseguire l'autenticazione ad Azure OpenAI da un'app ospitata in Azure usando Microsoft Entra ID

Questo articolo illustra come usare identità gestite di Microsoft Entra ID e la libreria Microsoft.Extensions.AI per autenticare un'app ospitata in Azure in una risorsa OpenAI di Azure.

Un'identità gestita da Microsoft Entra ID consente all'app di accedere facilmente ad altre risorse protette di Microsoft Entra, ad esempio Azure OpenAI. L'identità viene gestita dalla piattaforma Azure e non richiede il provisioning, la gestione o la rotazione di informazioni riservate.

Prerequisiti

Aggiungere un'identità gestita al servizio app

Le identità gestite forniscono un'identità gestita automaticamente in Microsoft Entra ID per le applicazioni da usare per la connessione alle risorse che supportano l'autenticazione di Microsoft Entra. Le applicazioni possono usare identità gestite per ottenere token Microsoft Entra senza dover gestire le credenziali. All'applicazione possono essere assegnati due tipi di identità:

  • Un'identità assegnata dal sistema è associata alla tua app e viene eliminata se l'app viene eliminata. Un'app può avere una sola identità assegnata dal sistema.
  • Un'identità assegnata dall'utente è una risorsa indipendente di Azure che può essere assegnata alla vostra app. Un'app può avere più identità assegnate dall'utente.
  1. Passare alla pagina dell'app nel portale di Azure e quindi scorrere fino al gruppo Impostazioni .

  2. Selezionare Identity.

  3. Nella scheda assegnata dal sistema di impostare Stato su Sue quindi selezionare Salva.

    Screenshot che mostra come aggiungere un'identità gestita assegnata dal sistema a un'app.

    Nota

    Lo screenshot precedente illustra questo processo in un servizio app di Azure, ma i passaggi sono simili in altri host, ad esempio App Contenitore di Azure.

  • assegnato dal sistema
  • assegnato dall'utente

Eseguire il comando az webapp identity assign per creare un'identità assegnata dal sistema:

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

Aggiungere un ruolo utente OpenAI di Azure all'identità

  1. Nel portale di Azure , passare all'ambito al quale si vuole concedere l'accesso a Azure OpenAI. L'ambito può essere un gruppo di gestione , una sottoscrizione , un gruppo di risorse , o una risorsa specifica Azure OpenAI.

  2. Nel riquadro di spostamento a sinistra, seleziona Controllo di accesso (IAM).

  3. Selezionare Aggiungie quindi selezionare Aggiungi assegnazione di ruolo.

    Screenshot che mostra come aggiungere un ruolo RBAC.

  4. Nella scheda Ruolo, selezionare il ruolo Utente Servizi Cognitivi OpenAI.

  5. Nella scheda Membri, selezionare l'identità gestita.

  6. Nella scheda Rivedi e assegna selezionare Rivedi e assegna per assegnare il ruolo.

È possibile utilizzare Azure CLI per assegnare il ruolo di Utente OpenAI dei Servizi cognitivi alla propria identità gestita a vari livelli di ambito.

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

Implementare l'autenticazione dell'identità nel codice dell'app

  1. Aggiungere i pacchetti NuGet seguenti all'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
    

    I pacchetti precedenti gestiscono i problemi seguenti per questo scenario:

    • Azure.Identity: fornisce funzionalità di base per l'uso con Microsoft Entra ID
    • Azure.AI.OpenAI : consente all'app di interfacciarsi con il servizio Azure OpenAI
    • Microsoft.Extensions.Azure: fornisce estensioni ausiliarie per registrare i servizi per l'iniezione delle dipendenze
    • Microsoft.Extensions.AI: fornisce astrazioni di intelligenza artificiale per attività di intelligenza artificiale comuni
    • Microsoft.Extensions.AI.OpenAI : consente di usare i tipi di servizio OpenAI come astrazioni di intelligenza artificiale fornite da Microsoft.Extensions.AI
  2. Nel file Program.cs dell'app creare un oggetto DefaultAzureCredential per individuare e configurare le credenziali disponibili:

    // 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. Creare un servizio di intelligenza artificiale e registrarlo con la raccolta di servizi:

    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. Inserire il servizio registrato per l'uso negli endpoint:

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

    Suggerimento

    Scopri di più sull'iniezione delle dipendenze in ASP.NET Core e su come registrare altri tipi di servizi di intelligenza artificiale nell'SDK di Azure per .NET documentazione sull'iniezione delle dipendenze.