Authentifier des applications .NET auprès des services Azure pendant le développement local à l’aide de comptes de développeur
Les développeurs doivent déboguer et tester des applications cloud sur leurs stations de travail locale. Lorsqu’une application s’exécute sur la station de travail d’un développeur pendant le développement local, elle doit toujours s’authentifier auprès des services Azure utilisés par l’application. Cet article explique comment utiliser les informations d’identification Azure d’un développeur pour authentifier l’application auprès d’Azure pendant le développement local.
Pour qu’une application s’authentifie auprès d’Azure pendant le développement local à l’aide des informations d’identification Azure du développeur, le développeur doit être connecté à Azure à partir de l’un des outils de développement suivants :
- Visual Studio
- Azure CLI
- Azure Developer CLI
- Azure PowerShell
La bibliothèque Azure Identity peut détecter que le développeur est connecté à partir de l’un de ces outils. La bibliothèque peut ensuite obtenir le jeton d’accès Microsoft Entra via l’outil pour authentifier l’application auprès d’Azure en tant qu’utilisateur(-trice) connecté(e).
Cette approche est plus simple à configurer pour une équipe de développement, car elle tire parti des comptes Azure existants des développeurs. Toutefois, le compte d’un développeur a probablement plus d’autorisations que celles requises par l’application, dépassant les autorisations que l’application exécute en production. En guise d’alternative, vous pouvez créer des principaux de service d’application à utiliser pendant le développement local, qui peuvent être limités aux seuls besoins de l’application.
1 – Créer un groupe Microsoft Entra pour le développement local
Comme il y a presque toujours plusieurs développeurs qui travaillent sur une application, il est recommandé de créer un groupe Microsoft Entra pour encapsuler les rôles (autorisations) dont l’application a besoin dans le développement local. Cette approche offre les avantages suivants :
- Chaque développeur est assuré d’avoir les mêmes rôles attribués, car les rôles sont attribués au niveau du groupe.
- Si un nouveau rôle est nécessaire pour l’application, il doit uniquement être ajouté au groupe pour l’application.
- Si un nouveau développeur rejoint l’équipe, il bénéficie des autorisations nécessaires pour travailler sur l’application après avoir été ajouté au groupe.
Si vous disposez d’un groupe Microsoft Entra existant pour votre équipe de développement, vous pouvez utiliser ce groupe. Sinon, suivez les étapes suivantes pour créer un groupe Microsoft Entra.
Remarque
Par défaut, la création de groupes Microsoft Entra est limitée à certains rôles privilégiés dans un répertoire. Si vous ne parvenez pas à créer un groupe, contactez un(e) administrateur(-trice) pour votre annuaire. Si vous ne parvenez pas à ajouter des membres à un groupe existant, contactez le propriétaire du groupe ou un(e) administrateur(-trice) d’annuaire. Pour plus d’informations, consultez Gérer les groupes Microsoft Entra et l’appartenance à un groupe.
2 – Attribuer des rôles au groupe Microsoft Entra
Ensuite, déterminez les rôles (autorisations) dont votre application a besoin sur les ressources et attribuez ces rôles à votre application. Dans cet exemple, les rôles sont attribués au groupe Microsoft Entra créé à l’étape 1. Les groupes peuvent se voir attribuer un rôle au niveau d’une ressource, d’un groupe de ressources ou d’un abonnement. Cet exemple montre comment attribuer des rôles à l’étendue du groupe de ressources, car la plupart des applications regroupent toutes leurs ressources Azure dans un seul groupe de ressources.
3 – Se connecter à Azure à l’aide d’outils de développement
Ensuite, connectez-vous à Azure à l’aide de l’un de plusieurs outils de développement. Le compte que vous authentifiez doit également exister dans le groupe Microsoft Entra que vous avez créé et configuré précédemment.
Parcourez Outils>Options pour ouvrir la boîte de dialogue des options.
Dans la zone Options de recherche en haut, tapez Azure pour filtrer les options disponibles.
Sous Authentification du service Azure, choisissez Sélection du compte.
Sélectionnez le menu déroulant sous Choisir un compte et choisissez d’ajouter un compte Microsoft. Une fenêtre s’ouvre pour vous inviter à choisir un compte. Entrez les informations d’identification de votre compte Azure souhaité, puis sélectionnez la confirmation.
Sélectionnez OK pour fermer la boîte de dialogue des options.
4 - Implémenter DefaultAzureCredential dans votre application
DefaultAzureCredential est une séquence bien arrêtée et ordonnée de mécanismes d’authentification auprès de Microsoft Entra. Chaque mécanisme d’authentification est une classe dérivée de la classe TokenCredential appelée informations d’identification. Au moment de l’exécution, DefaultAzureCredential
tente de s’authentifier en utilisant les premières informations d’identification. Si ces informations d’identification ne parviennent pas à acquérir un jeton d’accès, les informations d’identification suivantes de la séquence sont utilisées, et ainsi de suite jusqu’à l’obtention d’un jeton d’accès. De cette façon, votre application peut utiliser différentes informations d’identification dans différents environnements sans qu’il soit nécessaire d’écrire du code propre à l’environnement.
L’ordre et les emplacements dans lesquels DefaultAzureCredential
recherchent les informations d’identification se trouvent dans DefaultAzureCredential.
Pour utiliser DefaultAzureCredential
, ajoutez les packages Azure.Identity et éventuellement Microsoft.Extensions.Azure à votre application :
Dans un terminal de votre choix, accédez au répertoire du projet d’application et exécutez les commandes suivantes :
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Les services Azure sont accessibles à l’aide de classes clientes spécialisées à partir des différentes bibliothèques de client du Kit de développement logiciel (SDK) Azure. Ces classes et vos propres services personnalisés doivent être inscrits afin qu’ils soient accessibles par le biais de l’injection de dépendances dans votre application. Dans Program.cs
, effectuez les étapes suivantes pour inscrire une classe cliente et DefaultAzureCredential
:
- Incluez les espaces de noms
Azure.Identity
etMicrosoft.Extensions.Azure
via les directivesusing
. - Inscrivez le client du service Azure à l’aide de la méthode d’extension correspondante préfixée avec
Add
. - Passez une instance de
DefaultAzureCredential
à la méthodeUseCredential
.
Par exemple :
using Microsoft.Extensions.Azure;
using Azure.Identity;
builder.Services.AddAzureClients(clientBuilder =>
{
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new DefaultAzureCredential());
});
Une alternative à UseCredential
consiste à instancier directement DefaultAzureCredential
:
using Azure.Identity;
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Lorsque le code précédent s’exécute sur votre poste de travail de développement local, il recherche dans les variables d’environnement un principal de service d’application ou, dans les outils de développement installés localement comme Visual Studio, un ensemble d’informations d’identification de développeur. Vous pouvez utiliser l’une ou l’autre de ces approches pour authentifier l’application auprès des ressources Azure pendant le développement local.
Quand vous le déployez sur Azure, ce même code peut également authentifier votre application auprès d’autres ressources Azure. DefaultAzureCredential
peut récupérer les paramètres d’environnement et les configurations d’identité managée pour s’authentifier automatiquement auprès d’autres services.