Compartilhar via


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

A integração da biblioteca de clientes do Azure para ASP.NET Core (Microsoft.Extensions.Azure) dá suporte à criação de tipos diferentes Azure.Core.TokenCredential de pares chave-valor definidos em appsettings.json e outros arquivos de configuração. As credenciais correspondem a um subconjunto das classes de credencial 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

Microsoft.Extensions.Azure pode automaticamente fornecer aos clientes de serviço do Azure uma classe TokenCredential pesquisando valores de credencial em appsettings.json ou outros arquivos de configuração 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.

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

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. Você também pode substituir o global DefaultAzureCredential usando valores de credencial 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 appsettings.json associado:

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

As credenciais a seguir também dão suporte à propriedade AdditionallyAllowedTenants, que especifica locatários 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 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 de Azure.Identity.ManagedIdentityCredential, adicione os seguintes pares chave-valor ao 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 do cliente, uma ID de recurso ou uma ID de objeto.

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

Identidade gerenciada como uma credencial de identidade federada

A identidade gerenciada como credencial de identidade federada é compatível nas Microsoft.Extensions.Azure versões 1.12.0 e posteriores. O recurso não funciona com a identidade gerenciada atribuída pelo sistema. A credencial pode ser configurada com uma identidade gerenciada atribuída pelo usuário fornecendo uma ID do cliente, uma ID de recurso ou uma 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 a Nuvem Pública do Azure
  • usgov para a nuvem do Azure US Government
  • china para Azure operado pela 21Vianet

Criar uma instância de AzurePipelinesCredential

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

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

Importante

AzurePipelinesCredential tem suporte nas Microsoft.Extensions.Azure versões 1.11.0 e posteriores.

Criar uma instância de WorkloadIdentityCredential

Para criar uma instância de Azure.Identity.WorkloadIdentityCredential, adicione os seguintes pares chave-valor ao 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 de Azure.Identity.ClientSecretCredential, adicione os seguintes pares chave-valor ao arquivo appsettings.json :

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

Criar uma instância de ClientCertificateCredential

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

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

Observação

A clientCertificateStoreLocation chave é opcional. Se a chave:

  • Está presente e tem um valor vazio, ela é ignorado.
  • Não está presente, o CurrentUser padrão é usado na enumeração X509Credentials.StoreLocation.

Criar uma instância de DefaultAzureCredential

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

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