使用 Microsoft Entra ID 從 Azure 裝載的應用程式向 Azure OpenAI 進行驗證
本文示範如何使用 Microsoft Entra ID 受控識別 和 Microsoft.Extensions.AI 連結庫 向 Azure OpenAI 資源驗證 Azure 裝載的應用程式。
來自 Microsoft Entra ID 的受控識別可讓您的應用程式輕鬆地存取其他Microsoft Entra 受保護的資源,例如 Azure OpenAI。 身分識別是由 Azure 平臺所管理,不需要您布建、管理或輪替任何秘密。
先決條件
- 具有有效訂閱的 Azure 帳戶。 免費建立帳戶。
- .NET SDK
- 建立及部署 Azure OpenAI 服務資源
- 建立 .NET 應用程式並將其部署至 App Service
新增受管理的身分識別至 App Service
受管識別在 Microsoft Entra ID 中提供一個自動管理的識別,讓應用程式在連接到支援 Microsoft Entra 驗證的資源時使用。 應用程式可以使用受控識別來取得Microsoft Entra 令牌,而不需要管理任何認證。 您的應用程式可以指定兩種類型的身分識別:
- 系統指派的身分識別 會系結至您的應用程式,若您的應用程式遭到刪除,它也會被刪除。 應用程式只能有一個系統指派的身分識別。
- 使用者指派的身分識別 是可指派給應用程式的獨立 Azure 資源。 應用程式可以有多個使用者指派的身分識別。
將 Azure OpenAI 使用者角色新增至身分識別
在 Azure 入口網站中,流覽至您想要授與 Azure OpenAI 存取權的範圍。 範圍可以是 管理群組、訂用帳戶、資源群組,或 Azure OpenAI 資源的特定。
在左側瀏覽窗格中,選取 [存取控制 (IAM)]。
選取 新增,然後選取 新增角色分配。
在 [角色] 索引標籤上,選取 [認知服務 OpenAI 使用者 角色]。
在[成員] 標籤上,選取受管理的身份識別。
在 [檢閱 + 指派] 索引標籤上,選擇 [檢閱 + 指派] 以分配角色。
您可以使用 Azure CLI 將認知服務 OpenAI 使用者角色指派給您的受控識別,並在不同的範圍中應用。
在應用程式程式代碼中實作身分識別驗證
將下列 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
前述套件在此情境中會處理下列問題:
- Azure.Identity:提供核心功能來處理 Microsoft Entra 識別符
- Azure.AI.OpenAI:讓您的應用程式能夠與 Azure OpenAI 服務互動
- Microsoft.Extensions.Azure:提供輔助擴充元件來註冊服務以進行相依性注入
- Microsoft.Extensions.AI:提供常見 AI 工作的 AI 抽象概念
- Microsoft.Extensions.AI.OpenAI:可讓您使用 OpenAI 服務類型作為 Microsoft.Extensions.AI 提供的 AI 抽象概念
在應用程式的
Program.cs
檔案中,建立DefaultAzureCredential
物件來探索及設定可用的認證:// 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 } );
建立 AI 服務,並將它註冊到服務集合:
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));
插入已註冊的服務以用於您的端點:
app.MapGet("/test-prompt", async (IChatClient chatClient) => { return await chatClient.GetResponseAsync("Test prompt", new ChatOptions()); }) .WithName("Test prompt");
提示
深入瞭解 ASP.NET Core 相依性插入,以及如何在 Azure SDK for .NET 相依性插入 文件中註冊其他 AI 服務類型。
相關內容
- 如何使用 App Service 和 Azure Functions 的受控識別
- 角色型訪問控制適用於 Azure OpenAI Service