S’authentifier auprès d’Azure OpenAI à partir d’une application hébergée Azure à l’aide de l’ID Microsoft Entra
Cet article montre comment utiliser identités gérées Microsoft Entra ID et la bibliothèque de Microsoft.Extensions.AI pour authentifier une application hébergée Azure avec une ressource Azure OpenAI.
Une identité managée à partir de Microsoft Entra ID permet à votre application d’accéder facilement à d’autres ressources protégées par Microsoft Entra, telles qu’Azure OpenAI. L’identité est gérée par la plateforme Azure et ne vous oblige pas à provisionner, gérer ou faire pivoter des secrets.
Conditions préalables
- Un compte Azure disposant d’un abonnement actif. Créer un compte gratuitement.
- .NET SDK
- Créer et déployer une ressource Azure OpenAI Service
- Créer et déployer une application .NET sur App Service
Ajouter une identité managée à App Service
Les identités managées fournissent une identité managée automatiquement dans l’ID Microsoft Entra pour les applications à utiliser lors de la connexion aux ressources qui prennent en charge l’authentification Microsoft Entra. Les applications peuvent utiliser des identités managées pour obtenir des jetons Microsoft Entra sans avoir à gérer les informations d’identification. Votre application peut être affectée à deux types d’identités :
- Une identité attribuée par le système est liée à votre application et est supprimée si votre application est supprimée. Une application ne peut avoir qu’une seule identité affectée par le système.
- Une identité attribuée par l’utilisateur est une ressource Azure autonome qui peut être assignée à votre application. Une application peut avoir plusieurs identités attribuées par l'utilisateur.
Accédez à la page de votre application dans le portail Azure , puis faites défiler vers le bas jusqu’au groupe paramètres .
Sélectionnez Identité.
Sous l’onglet Système affecté, basculez État sur Activé, puis sélectionnez Enregistrer.
Remarque
La capture d’écran précédente illustre ce processus sur azure App Service, mais les étapes sont similaires sur d’autres hôtes tels qu’Azure Container Apps.
Exécutez la commande az webapp identity assign
pour créer une identité affectée par le système :
az webapp identity assign --name <appName> --resource-group <groupName>
Ajouter un rôle d’utilisateur Azure OpenAI à l’identité
Dans le portail Azure , accédez à l'étendue à laquelle vous souhaitez accorder l'accès à Azure OpenAI . L’étendue peut être un groupe de gestion , un abonnement , un groupe de ressources , ou une ressource spécifique Azure OpenAI.
Dans le volet de navigation gauche, sélectionnez Contrôle d’accès (IAM).
Sélectionnez Ajouter, puis sélectionnez Ajouter une attribution de rôle.
Sous l’onglet Rôle, sélectionnez le rôle Utilisateur de Cognitive Services OpenAI.
Sous l’onglet Membres, sélectionnez l’identité managée.
Sous l’onglet Révision + affecter, sélectionnez Vérifier + affecter pour attribuer le rôle.
Vous pouvez utiliser Azure CLI pour affecter le rôle d’utilisateur OpenAI Cognitive Services à votre identité managée à différentes étendues.
az role assignment create --assignee "<managedIdentityObjectID>" \
--role "Cognitive Services OpenAI User" \
--scope "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/<providerName>/<resourceType>/<resourceSubType>/<resourceName>"
Implémenter l’authentification d’identité dans votre code d’application
Ajoutez les packages NuGet suivants à votre application :
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
Les packages précédents gèrent chacun les problèmes suivants pour ce scénario :
- Azure.Identity : fournit des fonctionnalités de base pour utiliser l’ID Microsoft Entra
- azure.AI.OpenAI: permet à votre application d’interagir avec le service Azure OpenAI
- Microsoft.Extensions.Azure : fournit des extensions d’assistance pour inscrire des services pour l’injection de dépendances
- Microsoft.Extensions.AI: fournit des abstractions IA pour les tâches d’IA courantes
- Microsoft.Extensions.AI.OpenAI: vous permet d’utiliser des types de service OpenAI comme abstractions IA fournies par Microsoft.Extensions.AI
Dans le fichier
Program.cs
de votre application, créez un objetDefaultAzureCredential
pour découvrir et configurer les informations d’identification 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 } );
Créez un service IA et inscrivez-le auprès de la collection de services :
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));
Injectez le service enregistré pour les utiliser dans vos points de terminaison :
app.MapGet("/test-prompt", async (IChatClient chatClient) => { return await chatClient.CompleteAsync("Test prompt", new ChatOptions()); }) .WithName("Test prompt");
Conseil
En savoir plus sur l’injection de dépendances dans ASP.NET Core et sur l’enregistrement d’autres types de services d’IA dans la documentation du kit SDK Azure pour .NET sur l’injection de dépendances.