Поделиться через


Создание типов учетных данных Microsoft Entra с помощью файлов конфигурации

Библиотека Microsoft.Extensions.Azure поддерживает создание различных Azure.Core.TokenCredential типов из пар "ключ-значение", определенных в appsettings.json и других файлах конфигурации. Типы учетных данных соответствуют подмножеству классов учетных данных в клиентской библиотеке удостоверений Azure. В этой статье описывается поддержка различных TokenCredential типов и настройка необходимых пар "ключ-значение" для каждого типа.

Поддержка учетных данных Azure с помощью конфигурации

Библиотека Microsoft.Extensions.Azure может автоматически предоставлять клиентам TokenCredential службы Azure класс, выполняя поиск appsettings.json или другие файлы конфигурации для значений учетных данных с помощью IConfiguration абстракции для .NET. Этот подход позволяет разработчикам явно задавать значения учетных данных в разных средах через конфигурацию, а не напрямую через код приложения.

Следующие типы учетных данных поддерживаются с помощью конфигурации:

Настройка учетных данных Azure

Клиенты службы Azure, зарегистрированные в методе AddAzureClients , автоматически настраиваются с экземпляром, DefaultAzureCredential если явные учетные данные не предоставляются с помощью WithCredential метода расширения. Вы также можете переопределить глобальные DefaultAzureCredential значения учетных данных из файлов конфигурации при регистрации клиента для создания определенного типа учетных данных:

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");
});

Связанный файл appsettings.json :

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

Следующие типы учетных данных также поддерживают AdditionallyAllowedTenants свойство, указывающее дополнительные клиенты Microsoft Entra за пределами клиента по умолчанию, для которого учетные данные могут получать маркеры:

Добавьте значение wild карта "*", чтобы разрешить учетным данным получать маркеры для любого клиента Microsoft Entra, к который можно получить доступ. Если идентификаторы клиента не указаны, этот параметр не будет влиять на этот метод проверки подлинности, а учетные данные получат маркеры для любого запрошенного клиента при использовании этого метода.

{
    "additionallyAllowedTenants":  "<tenant-ids-separated-by-semicolon>"
}

ManagedIdentityCredential Создание типа

Управляемые удостоверения, назначаемые пользователем, и назначаемые системой, можно создавать с помощью значений конфигурации. Добавьте следующие пары "ключ-значение" в файл appsettings.json , чтобы создать экземпляр Azure.Identity.ManagedIdentityCredential.

Управляемые удостоверения, назначаемые пользователем

Укажите управляемое удостоверение, назначаемое пользователем, с помощью идентификатора клиента:

{
    "credential": "managedidentity",
    "clientId":  "<clientId>"
}

Кроме того, укажите управляемое удостоверение, назначаемое пользователем, с помощью идентификатора ресурса:

{
    "credential": "managedidentity",
    "managedIdentityResourceId":  "<managedIdentityResourceId>"
}

Идентификатор ресурса принимает форму /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}.

Управляемые удостоверения, назначаемые системой

{
    "credential": "managedidentity"
}

WorkloadIdentityCredential Создание типа

Добавьте в файл appsettings.json следующие пары "ключ-значение", чтобы создать Azure.Identity.WorkloadIdentityCredential:

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

ClientSecretCredential Создание типа

Добавьте в файл appsettings.json следующие пары "ключ-значение", чтобы создать Azure.Identity.ClientSecretCredential:

{
    "tenantId":  "<tenantId>",
    "clientId":  "<clientId>",
    "clientSecret": "<clientSecret>"
}

ClientCertificateCredential Создание типа

Добавьте в файл appsettings.json следующие пары "ключ-значение", чтобы создать Azure.Identity.ClientCertificateCredential:

{
    "tenantId":  "<tenantId>",
    "clientId":  "<clientId>",
    "clientCertificate": "<clientCertificate>",
    "clientCertificateStoreLocation": "<clientCertificateStoreLocation>",
    "additionallyAllowedTenants": "<tenant-ids-separated-by-semicolon>"
}

Примечание.

clientCertificateStoreLocationadditionallyAllowedTenants Пары "ключ-значение" являются необязательными. Если ключи присутствуют и имеют пустые значения, они игнорируются. Если значение не clientCertificateStoreLocation указано, используется значение по умолчанию CurrentUser из X509Credentials.StoreLocation перечисления.

DefaultAzureCredential Создание типа

Добавьте в файл appsettings.json следующие пары "ключ-значение", чтобы создать Azure.Identity.DefaultAzureCredential:

{
    "tenantId":  "<tenantId>",
    "clientId":  "<clientId>",
    "managedIdentityResourceId": "<managedIdentityResourceId>"
}