Udostępnij za pośrednictwem


Uwierzytelnianie w usłudze Azure OpenAI z aplikacji hostowanej na platformie Azure przy użyciu identyfikatora Entra firmy Microsoft

W tym artykule pokazano, jak używać tożsamości zarządzanych microsoft Entra ID i biblioteki Microsoft.Extensions.AI do uwierzytelniania aplikacji hostowanej na platformie Azure w zasobie usługi Azure OpenAI.

Zarządzana tożsamość z Microsoft Entra ID pozwala Twojej aplikacji na łatwy dostęp do innych zasobów chronionych przez Microsoft Entra, takich jak Azure OpenAI. Tożsamość jest zarządzana przez platformę Azure i nie wymaga od Ciebie dostarczania, zarządzania ani rotacji tajemnic.

Warunki wstępne

Dodawanie tożsamości zarządzanej do usługi App Service

Tożsamości zarządzane zapewniają automatyczną tożsamość zarządzaną w usłudze Microsoft Entra ID dla aplikacji używanych podczas nawiązywania połączenia z zasobami obsługującymi uwierzytelnianie firmy Microsoft Entra. Aplikacje mogą używać tożsamości zarządzanych do uzyskiwania tokenów firmy Microsoft entra bez konieczności zarządzania poświadczeniami. Aplikacji można przypisać dwa typy tożsamości:

  • Tożsamość przydzielona przez system jest powiązana z Twoją aplikacją i jest usuwana, jeśli aplikacja zostanie usunięta. Aplikacja może mieć tylko jedną tożsamość przypisaną przez system.
  • Tożsamość przypisana przez użytkownika jest samodzielnym zasobem Azure, który można przypisać do aplikacji. Aplikacja może mieć wiele tożsamości przypisanych przez użytkownika.
  1. Przejdź do strony aplikacji w Azure Portal, a następnie przewiń w dół do grupy Ustawienia.

  2. Wybierz pozycję Identity.

  3. Na karcie System przypisany przełącz stan, aby W, a następnie wybierz pozycję Zapisz.

    Zrzut ekranu przedstawiający sposób dodawania tożsamości zarządzanej przypisanej przez system do aplikacji.

    Notatka

    Powyższy zrzut ekranu przedstawia ten proces w usłudze Azure App Service, ale kroki są podobne na innych hostach, takich jak Azure Container Apps.

Uruchom polecenie az webapp identity assign, aby utworzyć tożsamość przypisaną przez system:

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

Dodawanie roli użytkownika usługi Azure OpenAI do tożsamości

  1. W witrynie Azure Portalprzejdź do zakresu, do którego chcesz udzielić dostępu usłudze Azure OpenAI. Zakresem może być grupa zarządzania , subskrypcja , grupa zasobów lub określony zasób azure OpenAI.

  2. W lewym panelu nawigacyjnym wybierz pozycję Kontrola dostępu (IAM).

  3. Wybierz pozycję Dodaj, a następnie wybierz pozycję Dodaj przypisanie roli.

    Zrzut ekranu przedstawiający sposób dodawania roli RBAC.

  4. Na karcie Rola wybierz rolę Użytkownik usług OpenAI Cognitive Services.

  5. Na karcie Członkowie wybierz tożsamość zarządzaną.

  6. Na karcie Przeglądanie i przypisywanie wybierz opcję Przeglądanie i przypisywanie w celu przypisania roli.

Interfejs wiersza poleceń Azure (Azure CLI) umożliwia przypisanie roli użytkownika Cognitive Services OpenAI do tożsamości zarządzanej w różnych zakresach.

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

Implementowanie uwierzytelniania tożsamości w kodzie aplikacji

  1. Dodaj następujące pakiety NuGet do aplikacji:

    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
    

    Powyższe pakiety obsługują następujące obawy dotyczące tego scenariusza:

    • Azure.Identity: zapewnia podstawowe funkcje do pracy z identyfikatorem Entra firmy Microsoft
    • azure.AI.OpenAI: umożliwia interfejs aplikacji za pomocą usługi Azure OpenAI
    • Microsoft.Extensions.Azure: udostępnia rozszerzenia pomocnicze do rejestrowania usług na potrzeby wstrzykiwania zależności
    • Microsoft.Extensions.AI: udostępnia abstrakcje sztucznej inteligencji dla typowych zadań sztucznej inteligencji
    • Microsoft.Extensions.AI.OpenAI: umożliwia używanie typów usług OpenAI jako abstrakcji sztucznej inteligencji udostępnianych przez Microsoft.Extensions.AI
  2. W pliku Program.cs aplikacji utwórz obiekt DefaultAzureCredential w celu odnajdywania i konfigurowania dostępnych poświadczeń:

    // 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. Utwórz usługę sztucznej inteligencji i zarejestruj ją w kolekcji usług:

    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. Wstrzyknij zarejestrowaną usługę do użycia w swoich punktach końcowych.

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

    Napiwek

    Dowiedz się więcej o iniekcji zależności w ASP.NET Core i jak rejestrować inne typy usług sztucznej inteligencji w zestawie Azure SDK dla platformy .NET dokumentacji iniekcji zależności.