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:
- ClientCertificateCredential
- ClientSecretCredential
- DefaultAzureCredential
- ManagedIdentityCredential
- WorkloadIdentityCredential
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 enMicrosoft.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>"
}