Compartir a través de


Creación de tipos de credenciales de Microsoft Entra con archivos de configuración

La biblioteca Microsoft.Extensions.Azure admite la creación de diferentes tipos de pares clave-valor Azure.Core.TokenCredential definidos en appsettings.json y otros archivos de configuración. Los tipos de credenciales corresponden a un subconjunto de las clases de credenciales de la biblioteca cliente de Azure Identity. En este artículo se describe la compatibilidad con diferentes tipos de TokenCredential y cómo configurar los pares clave-valor necesarios para cada tipo.

Compatibilidad con las credenciales de Azure a través de la configuración

La biblioteca Microsoft.Extensions.Azure puede proporcionar automáticamente a los clientes de servicio de Azure una clase TokenCredential mediante la búsqueda de appsettings.json u otros archivos de configuración para los valores de credenciales mediante la abstracción IConfiguration de .NET. Este enfoque permite a los desarrolladores establecer explícitamente valores de credenciales en distintos entornos a través de la configuración en lugar de hacerlo directamente mediante el código de aplicación.

Los siguientes tipos de credenciales se admiten a través de la configuración:

Configuración de credenciales de Azure

Los clientes de servicio de Azure registrados con el método AddAzureClients se configuran automáticamente con una instancia de DefaultAzureCredential si no se proporciona ninguna credencial explícita a través del método de extensión WithCredential. También puede invalidar el DefaultAzureCredential global mediante valores de credenciales de los archivos de configuración al registrar un cliente para crear un tipo de credencial específico:

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");
});

El archivo appsettings.json asociado:

"Storage": {
    "serviceUri": "<service_uri>",
    "credential": "managedidentity",
    "clientId":  "<clientId>"
}

Los siguientes tipos de credenciales también admiten la propiedad AdditionallyAllowedTenants, que especifica inquilinos adicionales de Microsoft Entra más allá del inquilino predeterminado para el que la credencial puede adquirir tokens:

Agregue el carácter comodín "*" para permitir que la credencial adquiera tokens para cualquier inquilino de Microsoft Entra al que pueda acceder la cuenta iniciada. Si no se especifica ningún identificador de inquilino, esta opción no tendrá ningún efecto en ese método de autenticación y la credencial adquirirá tokens para cualquier inquilino solicitado al usar ese método.

{
    "additionallyAllowedTenants":  "<tenant-ids-separated-by-semicolon>"
}

Creación de un tipo de ManagedIdentityCredential

Puede crear identidades administradas asignadas por el usuario y asignadas por el sistema mediante valores de configuración. Agregue los siguientes pares clave-valor al archivo appsettings.json para crear una instancia de Azure.Identity.ManagedIdentityCredential.

Identidades administradas asignadas por el usuario

Una identidad administrada asignada por el usuario se puede usar proporcionando un identificador de cliente, un identificador de recurso o un identificador de objeto:

  • Id. de cliente:

    {
        "credential": "managedidentity",
        "clientId":  "<clientId>"
    }
    
  • Identificador de recurso:

    {
        "credential": "managedidentity",
        "managedIdentityResourceId":  "<managedIdentityResourceId>"
    }
    

    El identificador de recurso toma el formato /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.

  • Id. de objeto:

    {
        "credential": "managedidentity",
        "managedIdentityObjectId":  "<managedIdentityObjectId>"
    }    
    

    Importante

    La managedIdentityObjectId propiedad JSON se admite en Microsoft.Extensions.Azure las versiones 1.8.0 y posteriores.

Identidades administradas asignadas por el sistema

{
    "credential": "managedidentity"
}

Creación de un tipo de WorkloadIdentityCredential

Agregue los siguientes pares clave-valor al archivo appsettings.json para crear un Azure.Identity.WorkloadIdentityCredential:

{
    "credential": "workloadidentity",
    "tenantId":  "<tenantId>",
    "clientId":  "<clientId>",
    "tokenFilePath": "<tokenFilePath>"
}

Creación de un tipo de ClientSecretCredential

Agregue los siguientes pares clave-valor al archivo appsettings.json para crear un Azure.Identity.ClientSecretCredential:

{
    "tenantId":  "<tenantId>",
    "clientId":  "<clientId>",
    "clientSecret": "<clientSecret>"
}

Creación de un tipo de ClientCertificateCredential

Agregue los siguientes pares clave-valor al archivo appsettings.json para crear un Azure.Identity.ClientCertificateCredential:

{
    "tenantId":  "<tenantId>",
    "clientId":  "<clientId>",
    "clientCertificate": "<clientCertificate>",
    "clientCertificateStoreLocation": "<clientCertificateStoreLocation>",
    "additionallyAllowedTenants": "<tenant-ids-separated-by-semicolon>"
}

Nota:

Los pares clave-valor clientCertificateStoreLocation y additionallyAllowedTenants son opcionales. Si las claves están presentes y tienen valores vacíos, se omiten. Si no se especifica ningún clientCertificateStoreLocation, se usa el CurrentUser predeterminado de la enumeración X509Credentials.StoreLocation.

Creación de un tipo de DefaultAzureCredential

Agregue los siguientes pares clave-valor al archivo appsettings.json para crear un Azure.Identity.DefaultAzureCredential:

{
    "tenantId":  "<tenantId>",
    "clientId":  "<clientId>",
    "managedIdentityResourceId": "<managedIdentityResourceId>"
}