Créer des types d’informations d’identification Microsoft Entra à l’aide de fichiers de configuration
La bibliothèque Microsoft.Extensions.Azure
prend en charge la création de différents types Azure.Core.TokenCredential à partir de paires clé-valeur définies dans appsettings.json et d’autres fichiers de configuration. Les types d’informations d’identification correspondent à un sous-ensemble des classes d’informations d’identification dans la bibliothèque cliente Azure Identity. Cet article décrit la prise en charge des différents types TokenCredential
et la configuration des paires clé-valeur requises pour chaque type.
Prise en charge des informations d’identification Azure par le biais de la configuration
La bibliothèque Microsoft.Extensions.Azure
peut fournir automatiquement aux clients de service Azure une classe TokenCredential
en recherchant appsettings.json ou d’autres fichiers de configuration pour les valeurs d’informations d’identification à l’aide de l’abstraction IConfiguration
pour .NET. Cette approche permet aux développeurs de définir explicitement des valeurs d’informations d’identification dans différents environnements via la configuration plutôt que directement via le code d’application.
Les types d’informations d’identification suivants sont pris en charge par le biais de la configuration :
- ClientCertificateCredential
- ClientSecretCredential
- DefaultAzureCredential
- ManagedIdentityCredential
- WorkloadIdentityCredential
Configurer les informations d’identification Azure
Les clients de service Azure inscrits avec la méthode AddAzureClients sont automatiquement configurés avec une instance de DefaultAzureCredential
si aucune information d’identification explicite n’est fournie via la méthode d’extension WithCredential. Vous pouvez également remplacer le DefaultAzureCredential
global à l’aide de valeurs d’informations d’identification à partir de fichiers de configuration lors de l’inscription d’un client pour créer un type d’informations d’identification spécifique :
builder.Services.AddAzureClients(clientBuilder =>
{
// Register BlobServiceClient using credentials from appsettings.json
clientBuilder.AddBlobServiceClient(builder.Configuration.GetSection("Storage"));
// Register ServiceBusClient using the fallback DefaultAzureCredential credentials
clientBuilder.AddServiceBusClientWithNamespace(
"<your_namespace>.servicebus.windows.net");
});
Fichier appsettings.json associé :
"Storage": {
"serviceUri": "<service_uri>",
"credential": "managedidentity",
"clientId": "<clientId>"
}
Les types d’informations d’identification suivants prennent également en charge la propriété AdditionallyAllowedTenants
, qui spécifie des locataires Microsoft Entra supplémentaires au-delà du locataire par défaut pour lequel les informations d’identification peuvent acquérir des jetons :
Ajoutez le caractère générique « * » pour autoriser les informations d’identification à acquérir des jetons pour n’importe quel locataire Microsoft Entra auquel le compte connecté peut accéder. Si aucun ID de locataire n’est spécifié, cette option n’aura aucun effet sur cette méthode d’authentification et les informations d’identification acquerront des jetons pour n’importe quel locataire demandé lors de l’utilisation de cette méthode.
{
"additionallyAllowedTenants": "<tenant-ids-separated-by-semicolon>"
}
Créer un type ManagedIdentityCredential
Vous pouvez créer des identités managées affectées par l’utilisateur et affectées par le système à l’aide de valeurs de configuration. Ajoutez les paires clé-valeur suivantes à votre fichier appsettings.json pour créer une instance de Azure.Identity.ManagedIdentityCredential.
Identités managées attribuées par l’utilisateur
Une identité managée affectée par l’utilisateur peut être utilisée en fournissant un ID client, un ID de ressource ou un ID d’objet :
ID client :
{ "credential": "managedidentity", "clientId": "<clientId>" }
ID de ressource :
{ "credential": "managedidentity", "managedIdentityResourceId": "<managedIdentityResourceId>" }
L’ID de ressource prend la forme
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}
.ID d’objet :
{ "credential": "managedidentity", "managedIdentityObjectId": "<managedIdentityObjectId>" }
Important
La
managedIdentityObjectId
propriété JSON est prise en charge dansMicrosoft.Extensions.Azure
les versions 1.8.0 et ultérieures.
Identités managées attribuées par le système
{
"credential": "managedidentity"
}
Créer un type WorkloadIdentityCredential
Ajoutez les paires clé-valeur suivantes à votre fichier appsettings.json pour créer un Azure.Identity.WorkloadIdentityCredential :
{
"credential": "workloadidentity",
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"tokenFilePath": "<tokenFilePath>"
}
Créer un type ClientSecretCredential
Ajoutez les paires clé-valeur suivantes à votre fichier appsettings.json pour créer un Azure.Identity.ClientSecretCredential :
{
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"clientSecret": "<clientSecret>"
}
Créer un type ClientCertificateCredential
Ajoutez les paires clé-valeur suivantes à votre fichier appsettings.json pour créer un Azure.Identity.ClientCertificateCredential :
{
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"clientCertificate": "<clientCertificate>",
"clientCertificateStoreLocation": "<clientCertificateStoreLocation>",
"additionallyAllowedTenants": "<tenant-ids-separated-by-semicolon>"
}
Remarque
Les paires clé-valeur clientCertificateStoreLocation
et additionallyAllowedTenants
sont facultatives. Si les clés sont présentes et ont des valeurs vides, elles sont ignorées. Si aucun clientCertificateStoreLocation
n’est spécifié, la valeur par défaut CurrentUser
est utilisée à partir de l’énumération X509Credentials.StoreLocation.
Créer un type DefaultAzureCredential
Ajoutez les paires clé-valeur suivantes à votre fichier appsettings.json pour créer un Azure.Identity.DefaultAzureCredential :
{
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"managedIdentityResourceId": "<managedIdentityResourceId>"
}