Partager via


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 :

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 dans Microsoft.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>"
}