Bibliothèque de client Azure Identity pour .NET - version 1.10.3
La bibliothèque d’identités Azure fournit la prise en charge de l’authentification par jeton d’ID Microsoft Entra (anciennement Azure Active Directory) dans l’ensemble du Kit de développement logiciel (SDK) Azure. Il fournit un ensemble d’implémentations TokenCredential
qui peuvent être utilisées pour construire des clients du Kit de développement logiciel (SDK) Azure qui prennent en charge l’authentification par jeton Microsoft Entra.
| Code sourcePackage (NuGet) | Documentation de référence sur les | APIdocumentation sur l’ID Microsoft Entra
Prise en main
Installer le package
Installez la bibliothèque de client Azure Identity pour .NET avec NuGet :
dotnet add package Azure.Identity
Prérequis
- Un abonnement Azure.
- Azure CLI peut également être utile pour l’authentification dans un environnement de développement, la création de comptes et la gestion des rôles de compte.
Authentifier le client
Lors du débogage et de l’exécution de code localement, il est courant pour un développeur d’utiliser son propre compte pour authentifier les appels aux services Azure. Il existe plusieurs outils de développement qui peuvent servir à cette authentification dans votre environnement de développement.
S’authentifier via Visual Studio
Les développeurs utilisant Visual Studio 2017 ou version ultérieure peuvent authentifier un compte Microsoft Entra via l’IDE. Les applications utilisant les DefaultAzureCredential
ou VisualStudioCredential
peuvent ensuite utiliser ce compte pour authentifier les appels dans le cadre d’une exécution locale.
Pour vous authentifier dans Visual Studio, sélectionnez le menu Options des outils> pour lancer la boîte de dialogue Options. Accédez ensuite aux Azure Service Authentication
options pour vous connecter avec votre compte Microsoft Entra.
S’authentifier via Visual Studio Code
Les développeurs qui utilisent Visual Studio Code peuvent utiliser l’extension de compte Azure pour s’authentifier via l’éditeur. Les applications utilisant les DefaultAzureCredential
ou VisualStudioCodeCredential
peuvent ensuite utiliser ce compte pour authentifier les appels dans le cadre d’une exécution locale.
Il s’agit d’un problème connu qui VisualStudioCodeCredential
ne fonctionne pas avec les versions d’extension de compte Azure plus récentes que 0.9.11. Une solution à long terme à ce problème est en cours. En attendant, envisagez de vous authentifier via Azure CLI.
S’authentifier via Azure CLI
Les développeurs qui codent en dehors d’un IDE peuvent également utiliser Azure CLI pour s’authentifier. Les applications utilisant les DefaultAzureCredential
ou AzureCliCredential
peuvent ensuite utiliser ce compte pour authentifier les appels dans le cadre d’une exécution locale.
Pour s’authentifier avec Azure CLI, les utilisateurs peuvent exécuter la commande az login
. Pour les utilisateurs s’exécutant sur un système avec un navigateur web par défaut, Azure CLI lance le navigateur pour authentifier l’utilisateur.
Sur les systèmes sans navigateur web par défaut, la commande az login
utilise le flux d’authentification de code d’appareil. L’utilisateur peut également spécifier l’argument --use-device-code
pour forcer Azure CLI à utiliser le flux de code d’appareil au lieu de lancer un navigateur.
S’authentifier via le Azure Developer CLI
Les développeurs qui codent en dehors d’un IDE peuvent également utiliser les Azure Developer CLI pour s’authentifier. Les applications utilisant les DefaultAzureCredential
ou AzureDeveloperCliCredential
peuvent ensuite utiliser ce compte pour authentifier les appels dans le cadre d’une exécution locale.
Pour s’authentifier avec le Azure Developer CLI, les utilisateurs peuvent exécuter la commande azd auth login
. Pour les utilisateurs s’exécutant sur un système avec un navigateur web par défaut, le Azure Developer CLI lance le navigateur pour authentifier l’utilisateur.
Sur les systèmes sans navigateur web par défaut, la commande azd auth login --use-device-code
utilise le flux d’authentification de code d’appareil.
S’authentifier via Azure PowerShell
Les développeurs qui codent en dehors d’un IDE peuvent également utiliser Azure PowerShell pour s’authentifier. Les applications utilisant les DefaultAzureCredential
ou AzurePowerShellCredential
peuvent ensuite utiliser ce compte pour authentifier les appels dans le cadre d’une exécution locale.
Pour s’authentifier avec Azure PowerShell, les utilisateurs peuvent exécuter la commande Connect-AzAccount
. Pour les utilisateurs s’exécutant sur un système avec un navigateur web par défaut et la version 5.0.0 ou ultérieure d’Azure PowerShell, le navigateur est lancé pour authentifier l’utilisateur.
Sur les systèmes sans navigateur web par défaut, la commande Connect-AzAccount
utilise le flux d’authentification de code d’appareil. L’utilisateur peut également forcer Azure PowerShell à utiliser le flux de code de l’appareil au lieu de lancer un navigateur en spécifiant l’argument UseDeviceAuthentication
.
Concepts clés
Informations d'identification
Les informations d’identification sont une classe qui contient ou peut obtenir les données nécessaires à un client de service pour authentifier les demandes. Les clients de service dans le Kit de développement logiciel (SDK) Azure acceptent les informations d’identification lorsqu’ils sont construits. Les clients de service utilisent ces informations d’identification pour authentifier les demandes adressées au service.
La bibliothèque d’identités Azure se concentre sur l’authentification OAuth avec Microsoft Entra ID et offre diverses classes d’informations d’identification capables d’acquérir un jeton Microsoft Entra pour authentifier les demandes de service. Toutes les classes d’informations d’identification de cette bibliothèque sont des implémentations de la TokenCredential
classe abstraite dans Azure.Core, et chacune d’entre elles peut être utilisée pour construire des clients de service capables de s’authentifier avec un TokenCredential
.
Pour obtenir la liste complète des types d’informations d’identification disponibles, consultez Classes d’informations d’identification.
DefaultAzureCredential
Convient à la DefaultAzureCredential
plupart des scénarios où l’application est destinée à être exécutée dans Azure. C’est parce que les DefaultAzureCredential
combinent les informations d’identification couramment utilisées pour l’authentification lors du déploiement avec les informations d’identification utilisées pour l’authentification dans un environnement de développement.
Remarque :
DefaultAzureCredential
est destiné à simplifier la prise en main du Kit de développement logiciel (SDK) en gérant des scénarios courants avec des comportements par défaut raisonnables. Les développeurs qui souhaitent davantage de contrôle ou dont le scénario n’est pas pris en charge par les paramètres par défaut doivent utiliser d’autres types d’informations d’identification.
Les DefaultAzureCredential
essaient l’authentification via les mécanismes suivants, dans l’ordre indiqué, et s’arrêtent dès que l’un de ces derniers s’avère concluant :
- Environnement : lit les
DefaultAzureCredential
informations de compte spécifiées via des variables d’environnement et les utilise pour s’authentifier. - Identité de charge de travail : si l’application est déployée sur un hôte Azure avec l’identité de charge de travail activée, le
DefaultAzureCredential
s’authentifie avec ce compte. - Identité managée : si l’application est déployée sur un hôte Azure avec l’identité managée activée, le
DefaultAzureCredential
s’authentifie avec ce compte. - Visual Studio : si le développeur s’est authentifié via Visual Studio, le
DefaultAzureCredential
s’authentifie avec ce compte. - Visual Studio Code : actuellement exclu par défaut comme l’authentification sdk via Visual Studio Code est interrompue en raison du problème #27263. Le
VisualStudioCodeCredential
est réactivé dans le flux une fois qu’unDefaultAzureCredential
correctif est en place. Le problème n° 30525 suit ce problème. En attendant, les utilisateurs de Visual Studio Code peuvent authentifier leur environnement de développement à l’aide d’Azure CLI. - Azure CLI : si le développeur a authentifié un compte via la commande Azure CLI
az login
, s’authentifieDefaultAzureCredential
auprès de ce compte. - Azure PowerShell : si le développeur a authentifié un compte via la commande Azure PowerShell
Connect-AzAccount
, s’authentifie auprès deDefaultAzureCredential
ce compte. - Azure Developer CLI : si le développeur s’est authentifié via la commande Azure Developer CLI
azd auth login
, s’authentifie auprès deDefaultAzureCredential
ce compte. - Navigateur interactif - Si cette option est activée, les
DefaultAzureCredential
authentifient le développeur de manière interactive via le navigateur par défaut du système actuel. Par défaut, ce type d’informations d’identification est désactivé.
Stratégie de continuation
À partir de la version 1.10.1, DefaultAzureCredential
tente de s’authentifier avec toutes les informations d’identification du développeur jusqu’à ce que l’une d’elles réussisse, quelles que soient les erreurs que les informations d’identification du développeur précédentes ont rencontrées. Par exemple, une information d’identification de développeur peut tenter d’obtenir un jeton et échouer. Elle passe donc DefaultAzureCredential
aux informations d’identification suivantes dans le flux. Les informations d’identification de service déployées arrêtent le flux avec une exception levée si elles sont en mesure de tenter de récupérer des jetons, mais qu’elles n’en reçoivent pas. Avant la version 1.10.1, les informations d’identification du développeur arrêtaient de la même façon le flux d’authentification en cas d’échec de la récupération de jeton.
Ce comportement permet d’essayer toutes les informations d’identification du développeur sur votre ordinateur tout en ayant un comportement de déploiement prévisible.
Exemples
Authentifier avec DefaultAzureCredential
Cet exemple illustre l’authentification du SecretClient
à partir de la bibliothèque de client Azure.Security.KeyVault.Secrets à l’aide de DefaultAzureCredential
.
// Create a secret client using the DefaultAzureCredential
var client = new SecretClient(new Uri("https://myvault.vault.azure.net/"), new DefaultAzureCredential());
Activer l’authentification interactive avec DefaultAzureCredential
L’authentification interactive est désactivée dans le DefaultAzureCredential
par défaut. Cet exemple montre deux façons d’activer la partie d’authentification interactive de .DefaultAzureCredential
Lorsqu’il est activé DefaultAzureCredential
, le revient à l’authentification interactive du développeur via le navigateur par défaut du système si aucune autre information d’identification n’est disponible. Cet exemple authentifie ensuite un à EventHubProducerClient
partir de la bibliothèque de client Azure.Messaging.EventHubs à l’aide de avec l’authentification DefaultAzureCredential
interactive activée.
// the includeInteractiveCredentials constructor parameter can be used to enable interactive authentication
var credential = new DefaultAzureCredential(includeInteractiveCredentials: true);
var eventHubClient = new EventHubProducerClient("myeventhub.eventhubs.windows.net", "myhubpath", credential);
Spécifier une identité managée affectée par l’utilisateur avec DefaultAzureCredential
De nombreux hôtes Azure autorisent l’attribution d’une identité managée affectée par l’utilisateur. Cet exemple illustre la configuration de DefaultAzureCredential
pour authentifier une identité affectée par l’utilisateur lors du déploiement sur un hôte Azure. Il authentifie ensuite un BlobClient
à partir de la bibliothèque de client Azure.Storage.Blobs avec des informations d’identification.
// When deployed to an azure host, the default azure credential will authenticate the specified user assigned managed identity.
string userAssignedClientId = "<your managed identity client Id>";
var credential = new DefaultAzureCredential(new DefaultAzureCredentialOptions { ManagedIdentityClientId = userAssignedClientId });
var blobClient = new BlobClient(new Uri("https://myaccount.blob.core.windows.net/mycontainer/myblob"), credential);
En plus de configurer via le ManagedIdentityClientId
code, il peut également être défini à l’aide de la variable d’environnement AZURE_CLIENT_ID
. Ces deux approches sont équivalentes lors de l’utilisation de DefaultAzureCredential
.
Définir un flux d’authentification personnalisé avec des ChainedTokenCredential
L’utilisation des DefaultAzureCredential
est généralement le moyen le plus rapide pour commencer à développer des applications pour Azure, mais les utilisateurs plus expérimentés souhaiteront peut-être personnaliser les informations d’identification prises en compte lors de l’authentification. Avec ChainedTokenCredential
, les utilisateurs peuvent combiner plusieurs instances d’informations d’identification pour définir une chaîne d’informations d’identification personnalisée. Cet exemple illustre la création d’un ChainedTokenCredential
qui tente de s’authentifier à l’aide d’une identité managée et de revenir à l’authentification via Azure CLI si l’identité managée n’est pas disponible dans l’environnement actuel. Les informations d’identification sont ensuite utilisées pour authentifier un EventHubProducerClient
à partir de la bibliothèque de client Azure.Messaging.EventHubs.
// Authenticate using managed identity if it is available; otherwise use the Azure CLI to authenticate.
var credential = new ChainedTokenCredential(new ManagedIdentityCredential(), new AzureCliCredential());
var eventHubProducerClient = new EventHubProducerClient("myeventhub.eventhubs.windows.net", "myhubpath", credential);
Prise en charge des identités managées
L’authentification d’identité managée est prise en charge via ou DefaultAzureCredential
ManagedIdentityCredential
directement pour les services Azure suivants :
- Azure App Service et Azure Functions
- Azure Arc
- Azure Cloud Shell
- Azure Kubernetes Service
- Azure Service Fabric
- Machines virtuelles Azure
- Azure Virtual Machine Scale Sets
Exemples
Ces exemples illustrent l’authentification du SecretClient
à partir de la bibliothèque cliente Azure.Security.KeyVault.Secrets à l’aide de ManagedIdentityCredential
.
S’authentifier avec une identité managée affectée par l’utilisateur
var credential = new ManagedIdentityCredential(clientId: userAssignedClientId);
var client = new SecretClient(new Uri("https://myvault.vault.azure.net/"), credential);
S’authentifier avec une identité managée affectée par le système
var credential = new ManagedIdentityCredential();
var client = new SecretClient(new Uri("https://myvault.vault.azure.net/"), credential);
Cloud configuration
Par défaut, les informations d’identification s’authentifient auprès du point de terminaison Microsoft Entra pour le cloud public Azure. Pour accéder aux ressources dans d’autres clouds, telles que Azure Government ou un cloud privé, configurez les informations d’identification avec l’argument AuthorityHost
. AzureAuthorityHosts définit les autorités pour les clouds connus :
var credential = new DefaultAzureCredential(new DefaultAzureCredentialOptions { AuthorityHost = AzureAuthorityHosts.AzureGovernment });
Toutes les informations d’identification ne nécessitent pas cette configuration. Les informations d’identification qui s’authentifient via un outil de développement, tel que AzureCliCredential
, utilisent la configuration de cet outil.
Classes d’informations d’identification
Authentifier les applications hébergées par Azure
Informations d'identification | Utilisation |
---|---|
DefaultAzureCredential |
Fournit une expérience d’authentification simplifiée pour commencer rapidement à développer des applications exécutées dans Azure. |
ChainedTokenCredential |
Permet aux utilisateurs de définir des flux d’authentification personnalisés qui se composent de plusieurs informations d’identification. |
EnvironmentCredential |
Authentifie un principal de service ou un utilisateur via les informations d’identification spécifiées dans les variables d’environnement. |
ManagedIdentityCredential |
Authentifie l’identité managée d’une ressource Azure. |
WorkloadIdentityCredential |
Prend en charge ID de charge de travail Microsoft Entra sur Kubernetes. |
Authentifier les principaux de service
Informations d'identification | Utilisation | Référence |
---|---|---|
ClientAssertionCredential |
Authentifie un principal de service à l’aide d’une assertion cliente signée. | |
ClientCertificateCredential |
Authentifie un principal de service à l’aide d’un certificat. | Authentification d’un principal du service |
ClientSecretCredential |
Authentifie un principal de service à l’aide d’un secret. | Authentification d’un principal du service |
Authentification des utilisateurs
Informations d'identification | Utilisation | Référence |
---|---|---|
AuthorizationCodeCredential |
Authentifie un utilisateur avec un code d’autorisation obtenu précédemment. | Code d’authentification OAuth2 |
DeviceCodeCredential |
Authentifie un utilisateur de manière interactive sur les appareils ayant une interface utilisateur limitée. | Authentification de code d’appareil |
InteractiveBrowserCredential |
Authentifie un utilisateur de manière interactive avec le navigateur système par défaut. | Code d’authentification OAuth2 |
OnBehalfOfCredential |
Propage l’identité et les autorisations d’utilisateur déléguées par le biais de la chaîne de requêtes. | Authentification pour le compte de l’utilisateur |
UsernamePasswordCredential |
Authentifie un utilisateur au moyen d’un nom d’utilisateur et d’un mot de passe. | Authentification par nom d'utilisateur et mot de passe |
S’authentifier via des outils de développement
Informations d'identification | Utilisation | Référence |
---|---|---|
AzureCliCredential |
S’authentifie dans un environnement de développement avec Azure CLI. | Authentification Azure CLI |
AzureDeveloperCliCredential |
S’authentifie dans un environnement de développement avec le Azure Developer CLI. | référence Azure Developer CLI |
AzurePowerShellCredential |
S’authentifie dans un environnement de développement avec le Azure PowerShell. | Authentification Azure PowerShell |
VisualStudioCredential |
S’authentifie dans un environnement de développement avec Visual Studio. | Configuration de Visual Studio |
VisualStudioCodeCredential |
S’authentifie en tant qu’utilisateur connecté à l’extension de compte Azure Visual Studio Code. | Extension de compte Azure VS Code |
Note: Toutes les implémentations d’informations d’identification dans la bibliothèque Azure Identity sont threadsafe et une seule instance d’informations d’identification peut être utilisée par plusieurs clients de service.
Variables d'environnement
Les DefaultAzureCredential
et EnvironmentCredential
peuvent être configurés à l’aide de variables d’environnement. Chaque type d’authentification nécessite des valeurs pour des variables spécifiques :
Principal de service avec une clé secrète
Nom de la variable | Valeur |
---|---|
AZURE_CLIENT_ID |
ID d’une application Microsoft Entra |
AZURE_TENANT_ID |
ID du locataire Microsoft Entra de l’application |
AZURE_CLIENT_SECRET |
un des secrets client de l’application |
Principal de service avec un certificat
nom de variable | Valeur |
---|---|
AZURE_CLIENT_ID |
ID d’une application Microsoft Entra |
AZURE_TENANT_ID |
ID du locataire Microsoft Entra de l’application |
AZURE_CLIENT_CERTIFICATE_PATH |
chemin d’accès à un fichier de certificat PFX ou encodé en PEM, y compris une clé privée |
AZURE_CLIENT_CERTIFICATE_PASSWORD |
(facultatif) le mot de passe protégeant le fichier de certificat (actuellement pris en charge uniquement pour les certificats PFX (PKCS12) ) |
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN |
(facultatif) envoyer une chaîne de certificats dans l’en-tête x5c pour prendre en charge l’authentification basée sur le nom de l’objet/l’émetteur |
Nom d’utilisateur et mot de passe
Nom de la variable | Valeur |
---|---|
AZURE_CLIENT_ID |
ID d’une application Microsoft Entra |
AZURE_TENANT_ID |
ID du locataire Microsoft Entra de l’application |
AZURE_USERNAME |
nom d’utilisateur (généralement une adresse e-mail) |
AZURE_PASSWORD |
mot de passe de cet utilisateur |
La configuration est tentée dans l’ordre indiqué ci-dessus. Par exemple, si les valeurs d’un certificat et d’une clé secrète client sont toutes deux présentes, la clé secrète client est utilisée.
Évaluation continue de l’accès
À partir de la version 1.10.0, l’accès aux ressources protégées par l’évaluation continue de l’accès (CAE) est possible par demande. Ce comportement peut être activé en définissant la IsCaeEnabled
propriété de TokenRequestContext
via son constructeur. CAE n’est pas pris en charge pour les informations d’identification de développeur et d’identité managée.
Mise en cache de jeton
La mise en cache de jetons est une fonctionnalité fournie par la bibliothèque Azure Identity qui permet aux applications de :
- Cachez les jetons en mémoire (par défaut) ou sur le disque (opt-in).
- Améliorez la résilience et les performances.
- Réduisez le nombre de demandes adressées à Microsoft Entra ID pour obtenir des jetons d’accès.
La bibliothèque Azure Identity offre à la fois une mise en cache de disque en mémoire et persistante. Pour plus d’informations, consultez la documentation relative à la mise en cache des jetons
Dépannage
Consultez le guide de résolution des problèmes pour plus d’informations sur la façon de diagnostiquer différents scénarios d’échec.
Gestion des erreurs
Les erreurs résultant de l’authentification peuvent être générées sur n’importe quelle méthode cliente de service qui effectue une demande au service. Cela est dû au fait que la première fois que le jeton est demandé à partir des informations d’identification se trouve sur le premier appel au service et que les appels suivants peuvent avoir besoin d’actualiser le jeton. Pour distinguer ces échecs des échecs dans le client de service, les classes Azure Identity soulèvent le AuthenticationFailedException
avec les détails de la source de l’erreur dans le message d’exception, ainsi que éventuellement le message d’erreur. Selon l’application, ces erreurs peuvent ou non être récupérables.
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
// Create a secret client using the DefaultAzureCredential
var client = new SecretClient(new Uri("https://myvault.vault.azure.net/"), new DefaultAzureCredential());
try
{
KeyVaultSecret secret = await client.GetSecretAsync("secret1");
}
catch (AuthenticationFailedException e)
{
Console.WriteLine($"Authentication Failed. {e.Message}");
}
Pour plus d’informations sur la gestion des erreurs liées à l’échec de demandes adressées à Microsoft Entra ID ou aux points de terminaison d’identité managée, consultez la documentation relative aux id de Microsoft Entra sur les codes d’erreur d’autorisation.
Journalisation
La bibliothèque Azure Identity fournit les mêmes fonctionnalités de journalisation que le reste du Kit de développement logiciel (SDK) Azure.
Le moyen le plus simple de voir les journaux pour aider à déboguer les problèmes d’authentification consiste à activer la journalisation de la console.
// Setup a listener to monitor logged events.
using AzureEventSourceListener listener = AzureEventSourceListener.CreateConsoleLogger();
Toutes les informations d’identification peuvent être configurées avec des options de diagnostic, de la même manière que d’autres clients dans le SDK.
ATTENTION: Les demandes et réponses dans la bibliothèque Azure Identity contiennent des informations sensibles. Des précautions doivent être prises pour protéger les journaux, lors de la personnalisation de la sortie, afin d’éviter de compromettre la sécurité du compte.
DefaultAzureCredentialOptions options = new DefaultAzureCredentialOptions
{
Diagnostics =
{
LoggedHeaderNames = { "x-ms-request-id" },
LoggedQueryParameters = { "api-version" },
IsLoggingContentEnabled = true
}
};
Lorsque vous résolvez les problèmes d’authentification, vous pouvez également activer la journalisation des informations sensibles. Pour activer ce type de journalisation, définissez la propriété sur IsLoggingContentEnabled
true
. Pour journaliser uniquement les détails du compte utilisé pour tenter d’authentification et d’autorisation, définissez IsAccountIdentifierLoggingEnabled
sur true
.
DefaultAzureCredentialOptions options = new DefaultAzureCredentialOptions
{
Diagnostics =
{
LoggedHeaderNames = { "x-ms-request-id" },
LoggedQueryParameters = { "api-version" },
IsAccountIdentifierLoggingEnabled = true
}
};
Sécurité des threads
Nous garantissons que toutes les méthodes d’informations d’identification instance sont thread-safe et indépendantes les unes des autres (recommandations). Cela garantit que la recommandation de réutilisation des instances d’informations d’identification est toujours sécurisée, même entre les threads.
Concepts supplémentaires
Options clientes | Accès à la réponse | Diagnostics | Moqueur | Durée de vie du client
Étapes suivantes
Bibliothèques clientes prenant en charge l’authentification avec Azure Identity
La plupart des bibliothèques clientes répertoriées ici prennent en charge l’authentification avec TokenCredential
et la bibliothèque d’identités Azure.
Vous y trouverez également des liens où vous pouvez en savoir plus sur leur utilisation, y compris une documentation et des exemples supplémentaires.
Problèmes connus
Cette bibliothèque ne prend actuellement pas en charge les scénarios relatifs au service Azure AD B2C .
Les problèmes ouverts pour la Azure.Identity
bibliothèque sont disponibles ici.
Contribution
Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez https://cla.microsoft.com.
Quand vous envoyez une demande de tirage (pull request), un bot CLA détermine automatiquement si vous devez fournir un contrat CLA et agrémenter la demande de tirage de façon appropriée (par exemple, avec une étiquette ou un commentaire). Suivez simplement les instructions fournies par le bot. Vous ne devez effectuer cette opération qu’une seule fois sur tous les dépôts utilisant notre contrat CLA.
Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.