Partilhar via


Criar credenciais da biblioteca de Identidades do Azure por meio de arquivos de configuração

A integração da biblioteca de cliente do Azure para o ASP.NET Core (Microsoft.Extensions.Azure) dá suporte à criação de tipos diferentes Azure.Core.TokenCredential a partir de pares chave-valor definidos em appsettings.json e outros arquivos de configuração. As credenciais correspondem a um subconjunto das classes de credenciais na biblioteca de cliente do Azure Identity. Este artigo descreve o suporte para diferentes TokenCredential tipos e como configurar os pares chave-valor necessários para cada tipo.

Suporte para credenciais do Azure através da configuração

Microsoft.Extensions.Azure pode fornecer automaticamente uma classe TokenCredential aos clientes de serviço do Azure ao procurar valores de credenciais no appsettings.json ou em outros arquivos de configuração, usando a abstração IConfiguration para .NET. Essa abordagem permite que os desenvolvedores definam explicitamente valores de credenciais em diferentes ambientes por meio da configuração, em vez de diretamente pelo código do aplicativo.

As seguintes credenciais podem ser criadas por meio da configuração:

Configurar credenciais do Azure

Os clientes de serviço do Azure registrados com o AddAzureClients método são configurados automaticamente com uma instância de se nenhuma credencial explícita for fornecida por meio do DefaultAzureCredential método de WithCredential extensão. Você também pode substituir o global DefaultAzureCredential usando valores de credenciais de arquivos de configuração ao registrar um cliente para criar uma credencial específica:

builder.Services.AddAzureClients(clientBuilder =>
{
    // Register BlobServiceClient using credential from appsettings.json
    clientBuilder.AddBlobServiceClient(builder.Configuration.GetSection("Storage"));

    // Register ServiceBusClient using the fallback DefaultAzureCredential
    clientBuilder.AddServiceBusClientWithNamespace(
        "<your_namespace>.servicebus.windows.net");
});

O arquivo de appsettings.json associado:

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

As credenciais a seguir também oferecem suporte à AdditionallyAllowedTenants propriedade, que especifica os locatários do Microsoft Entra além do locatário padrão para o qual a credencial pode adquirir tokens:

Adicione o valor coringa * para permitir que as credenciais adquiram tokens para qualquer tenant do Microsoft Entra ao qual a conta conectada tenha acesso. Se nenhum ID de locatário for especificado, 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 uma instância de ManagedIdentityCredential

Você pode configurar uma credencial para utilizar uma identidade gerenciada das seguintes maneiras usando valores de configuração:

  • Identidade gerenciada atribuída pelo sistema
  • Identidade gerenciada atribuída pelo usuário
  • Identidade gerenciada como uma credencial de identidade federada

Para criar uma instância do Azure.Identity.ManagedIdentityCredential, adicione os seguintes pares chave-valor ao seu arquivo appsettings.json .

Identidade gerenciada atribuída pelo sistema

{
    "credential": "managedidentity"
}

Identidade gerenciada atribuída pelo usuário

Uma identidade gerenciada atribuída pelo usuário pode ser usada fornecendo uma ID de cliente, ID de recurso ou ID de objeto.

{
    "credential": "managedidentity",
    "managedIdentityClientId": "<managed_identity_client_id>"
}

Identidade gerenciada como uma credencial de identidade federada

A identidade gerida como uma credencial de identidade federada é suportada nas Microsoft.Extensions.Azure versões 1.12.0 e posteriores. O recurso não funciona com a identidade gerenciada atribuída ao sistema. A credencial pode ser configurada com uma identidade gerenciada atribuída pelo usuário fornecendo uma ID de cliente, ID de recurso ou ID de objeto.

{
    "credential": "managedidentityasfederatedidentity",
    "azureCloud": "<azure_cloud>",
    "tenantId": "<tenant_id>",
    "clientId": "<client_id>",
    "managedIdentityClientId": "<managed_identity_client_id>"
}

O azureCloud valor da chave é usado para definir o escopo do token de acesso do Microsoft Entra. Pode ser um dos seguintes valores:

  • public para Azure Public Cloud
  • usgov para Azure Cloud do Governo dos EUA
  • china para Azure operado pela 21Vianet

Criar uma instância de AzurePipelinesCredential

Para criar uma instância do Azure.Identity.AzurePipelinesCredential, adicione os seguintes pares chave-valor ao seu arquivo appsettings.json :

{
    "credential": "azurepipelines",
    "clientId": "<client_id>",
    "tenantId": "<tenant_id>",
    "serviceConnectionId": "<service_connection_id>",
    "systemAccessToken": "<system_access_token>"
}

Importante

AzurePipelinesCredential é suportado nas Microsoft.Extensions.Azure versões 1.11.0 e posteriores.

Criar uma instância de WorkloadIdentityCredential

Para criar uma instância do Azure.Identity.WorkloadIdentityCredential, adicione os seguintes pares chave-valor ao seu arquivo appsettings.json :

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

Criar uma instância de ClientSecretCredential

Para criar uma instância do Azure.Identity.ClientSecretCredential, adicione os seguintes pares chave-valor ao seu arquivo appsettings.json :

{
    "tenantId": "<tenant_id>",
    "clientId": "<client_id>",
    "clientSecret": "<client_secret>"
}

Criar uma instância de ClientCertificateCredential

Para criar uma instância do Azure.Identity.ClientCertificateCredential, adicione os seguintes pares chave-valor ao seu arquivo appsettings.json :

{
    "tenantId": "<tenant_id>",
    "clientId": "<client_id>",
    "clientCertificate": "<client_certificate>",
    "clientCertificateStoreLocation": "<client_certificate_store_location>"
}

Nota

A clientCertificateStoreLocation chave é opcional. Se a chave:

  • Está presente e tem um valor vazio, é ignorado.
  • Não está presente, o padrão CurrentUser é utilizado a partir da enumeração X509Credentials.StoreLocation.

Criar uma instância de DefaultAzureCredential

Para criar uma instância do Azure.Identity.DefaultAzureCredential, adicione os seguintes pares chave-valor ao seu arquivo appsettings.json :

{
    "tenantId": "<tenant_id>",
    "clientId": "<client_id>",
    "managedIdentityResourceId": "<managed_identity_resource_id>"
}