Autenticación en Azure OpenAI desde una aplicación hospedada de Azure mediante el identificador de Microsoft Entra
Este artículo muestra cómo utilizar Identidades administradas de Microsoft Entra ID y la biblioteca Microsoft.Extensions.AI para autenticar una aplicación hospedada en Azure en un recurso OpenAI de Azure.
Una identidad administrada de Microsoft Entra ID permite a la aplicación acceder fácilmente a otros recursos protegidos de Microsoft Entra, como Azure OpenAI. La identidad se gestiona mediante la plataforma de Azure y no requiere que usted provisiona, administre ni rote ningún secreto.
Prerrequisitos
- Una cuenta de Azure que tiene una suscripción activa. Crear una cuenta de forma gratuita.
- .NET SDK
- Creación e implementación de un recurso de Azure OpenAI Service
- Creación e implementación de una aplicación .NET en App Service
Incorporación de una identidad administrada a App Service
Las identidades administradas proporcionan una identidad administrada automáticamente en microsoft Entra ID para que las aplicaciones se usen al conectarse a los recursos que admiten la autenticación de Microsoft Entra. Las aplicaciones pueden usar identidades administradas para obtener tokens de Microsoft Entra sin tener que administrar credenciales. A la aplicación se le pueden asignar dos tipos de identidades:
- Una identidad asignada por el sistema está vinculada a tu aplicación y se elimina si se elimina tu aplicación. Una aplicación solo puede tener una identidad asignada por el sistema.
- Una identidad asignada por el usuario es un recurso de Azure independiente que puede asignarse a la aplicación. Una aplicación puede tener varias identidades asignadas por el usuario.
Vaya a la página de la aplicación en Azure Portal y desplácese hacia abajo hasta el grupo Configuración.
Seleccione Identidad.
En la pestaña Asignado por el sistema, cambie Estado a Activado y, a continuación, seleccione Guardar.
Nota
En la captura de pantalla anterior se muestra este proceso en Una instancia de Azure App Service, pero los pasos son similares en otros hosts, como Azure Container Apps.
Ejecute el comando az webapp identity assign
para crear una identidad asignada por el sistema:
az webapp identity assign --name <appName> --resource-group <groupName>
Adición de un rol de usuario de Azure OpenAI a la identidad
En Azure Portal, vaya al ámbito al que desea conceder acceso de Azure OpenAI. El ámbito puede ser un grupo de administración, una suscripción, un grupo de recursos o un recurso específico de Azure OpenAI.
En el panel de navegación izquierdo, seleccione Control de acceso (IAM).
Seleccione Agregary, después, seleccione Agregar asignación de roles.
En la pestaña Rol, seleccione el rol de usuario de OpenAI de Cognitive Services.
En la pestaña Miembros, seleccione la identidad administrada.
En la pestaña Revisar y asignar, seleccione Revisar y asignar para asignar el rol.
Puede usar la CLI de Azure para asignar el rol de usuario OpenAI de Cognitive Services a su identidad administrada en sus distintos ámbitos.
az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>"
Implementación de la autenticación de identidad en el código de la aplicación
Agregue los siguientes paquetes NuGet a la aplicación:
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
Los paquetes anteriores manejan cada uno de los siguientes problemas para este escenario:
- Azure.Identity: proporciona una funcionalidad básica para trabajar con el identificador de Entra de Microsoft
- azure.AI.OpenAI: permite a la aplicación interactuar con el servicio Azure OpenAI.
- Microsoft.Extensions.Azure: proporciona extensiones auxiliares para registrar servicios para la inserción de dependencias
- Microsoft.Extensions.AI: proporciona abstracciones de INTELIGENCIA ARTIFICIAL para tareas comunes de inteligencia artificial
- microsoft.Extensions.AI.OpenAI: permite usar tipos de servicio openAI como abstracciones de IA proporcionadas por Microsoft.Extensions.AI
En el archivo
Program.cs
de la aplicación, cree un objetoDefaultAzureCredential
para detectar y configurar las credenciales disponibles:// 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 } );
Cree un servicio de IA y regístrelo con la colección de servicios:
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));
Inserte el servicio registrado para su uso en los puntos de conexión:
app.MapGet("/test-prompt", async (IChatClient chatClient) => { return await chatClient.CompleteAsync("Test prompt", new ChatOptions()); }) .WithName("Test prompt");
Sugerencia
Obtenga más información sobre la inserción de dependencias de ASP.NET Core y cómo registrar otros tipos de servicios de inteligencia artificial en el SDK de Azure para .NET documentación de inserción de dependencias.