Criar tipos de credenciais do Microsoft Entra usando arquivos de configuração
A biblioteca Microsoft.Extensions.Azure
dá suporte a criação de diferentes tipos Azure.Core.TokenCredential a partir de pares de chave-valor definidos em appsettings.json e outros arquivos de configuração. Os tipos de credenciais correspondem a um subconjunto de classes de credenciais na biblioteca de clientes da Identidade do Azure. Este artigo descreve o suporte a diferentes tipos TokenCredential
e como configurar os pares de chave-valor necessários para cada tipo.
Suporte para credenciais do Azure por meio da configuração
A biblioteca Microsoft.Extensions.Azure
pode fornecer automaticamente aos clientes de serviço do Azure uma classe TokenCredential
pesquisando appsettings.json ou outros arquivos de configuração para valores de credenciais usando a abstração IConfiguration
para .NET. Essa abordagem permite que os desenvolvedores definam explicitamente os valores de credenciais em diferentes ambientes por meio da configuração, em vez de usar diretamente o código do aplicativo.
Os seguintes tipos de credenciais tem suporte com a configuração:
- ClientCertificateCredential
- ClientSecretCredential
- DefaultAzureCredential
- ManagedIdentityCredential
- WorkloadIdentityCredential
Configurar as credenciais do Azure
Os clientes de serviço do Azure registrados com o método AddAzureClients são automaticamente configurados com uma instância de DefaultAzureCredential
se nenhuma credencial explícita for fornecida por meio do método de extensão WithCredential. Também é possível substituir o DefaultAzureCredential
global usando valores de credenciais dos arquivos de configuração ao registrar um cliente para criar um 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");
});
O arquivo appsettings.json associado:
"Storage": {
"serviceUri": "<service_uri>",
"credential": "managedidentity",
"clientId": "<clientId>"
}
Os seguintes tipos de credenciais também dão suporte a propriedade AdditionallyAllowedTenants
, que especifica locatários adicionais do Microsoft Entra além do locatário padrão para o qual a credencial pode adquirir tokens:
Adicione o valor curinga "*" para permitir que a credencial adquira tokens para qualquer locatário do Microsoft Entra que a conta conectada possa acessar. Se nenhuma ID de locatário for especificada, essa opção não terá efeito sobre esse método de autenticação e a credencial adquirirá tokens para qualquer locatário solicitado ao usar esse método.
{
"additionallyAllowedTenants": "<tenant-ids-separated-by-semicolon>"
}
Criar um tipo ManagedIdentityCredential
É possível criar identidades gerenciadas atribuídas pelo usuário e pelo sistema usando valores de configuração. Adicione os seguintes pares de chave-valor ao arquivo appsettings.json para criar uma instância de Azure.Identity.ManagedIdentityCredential.
Identidades Gerenciadas Atribuídas ao Usuário
Uma identidade gerenciada atribuída pelo usuário pode ser usada fornecendo uma ID do cliente, uma ID do recurso ou uma ID do objeto:
ID do Cliente:
{ "credential": "managedidentity", "clientId": "<clientId>" }
ID do recurso:
{ "credential": "managedidentity", "managedIdentityResourceId": "<managedIdentityResourceId>" }
A ID do recurso tem o formato
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}
.ID do Objeto:
{ "credential": "managedidentity", "managedIdentityObjectId": "<managedIdentityObjectId>" }
Importante
A
managedIdentityObjectId
propriedade JSON é compatível comMicrosoft.Extensions.Azure
as versões 1.8.0 e posteriores.
Identidades gerenciadas atribuídas pelo sistema
{
"credential": "managedidentity"
}
Criar um tipo WorkloadIdentityCredential
Adicione os seguintes pares de chave-valor ao seu arquivo appsettings.json para criar um Azure.Identity.WorkloadIdentityCredential:
{
"credential": "workloadidentity",
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"tokenFilePath": "<tokenFilePath>"
}
Criar um tipo ClientSecretCredential
Adicione os seguintes pares de chave-valor ao seu arquivo appsettings.json para criar um Azure.Identity.ClientSecretCredential:
{
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"clientSecret": "<clientSecret>"
}
Criar um tipo ClientCertificateCredential
Adicione os seguintes pares de chave-valor ao seu arquivo appsettings.json para criar um Azure.Identity.ClientCertificateCredential:
{
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"clientCertificate": "<clientCertificate>",
"clientCertificateStoreLocation": "<clientCertificateStoreLocation>",
"additionallyAllowedTenants": "<tenant-ids-separated-by-semicolon>"
}
Observação
Os pares de valores-chave clientCertificateStoreLocation
e additionallyAllowedTenants
são opcionais. Se as chaves estiverem presentes e tiverem valores vazios, elas serão ignoradas. Se não for especificado clientCertificateStoreLocation
, será usado o padrão CurrentUser
da enumeração X509Credentials.StoreLocation.
Criar um tipo DefaultAzureCredential
Adicione os seguintes pares de chave-valor ao seu arquivo appsettings.json para criar um Azure.Identity.DefaultAzureCredential:
{
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"managedIdentityResourceId": "<managedIdentityResourceId>"
}