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
- Konto platformy Azure z aktywną subskrypcją. Utwórz bezpłatne konto.
- zestawu SDK platformy .NET
- Tworzenie i wdrażanie zasobu usługi Azure OpenAI Service
- Tworzenie i wdrażanie aplikacji .NET w usłudze App Service
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.
Przejdź do strony aplikacji w Azure Portal, a następnie przewiń w dół do grupy Ustawienia.
Wybierz pozycję Identity.
Na karcie System przypisany przełącz stan, aby W, a następnie wybierz pozycję Zapisz.
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
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.
W lewym panelu nawigacyjnym wybierz pozycję Kontrola dostępu (IAM).
Wybierz pozycję Dodaj, a następnie wybierz pozycję Dodaj przypisanie roli.
Na karcie Rola wybierz rolę Użytkownik usług OpenAI Cognitive Services.
Na karcie Członkowie wybierz tożsamość zarządzaną.
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
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
W pliku
Program.cs
aplikacji utwórz obiektDefaultAzureCredential
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 } );
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));
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.