Compartilhar via


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:

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 com Microsoft.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>"
}