Создание типов учетных данных Microsoft Entra с помощью файлов конфигурации
Библиотека Microsoft.Extensions.Azure
поддерживает создание различных Azure.Core.TokenCredential типов из пар "ключ-значение", определенных в appsettings.json и других файлах конфигурации. Типы учетных данных соответствуют подмножеству классов учетных данных в клиентской библиотеке удостоверений Azure. В этой статье описывается поддержка различных TokenCredential
типов и настройка необходимых пар "ключ-значение" для каждого типа.
Поддержка учетных данных Azure с помощью конфигурации
Библиотека Microsoft.Extensions.Azure
может автоматически предоставлять клиентам TokenCredential
службы Azure класс, выполняя поиск appsettings.json или другие файлы конфигурации для значений учетных данных с помощью IConfiguration
абстракции для .NET. Этот подход позволяет разработчикам явно задавать значения учетных данных в разных средах через конфигурацию, а не напрямую через код приложения.
Следующие типы учетных данных поддерживаются с помощью конфигурации:
- ClientCertificateCredential
- ClientSecretCredential
- DefaultAzureCredential
- ManagedIdentityCredential
- WorkloadIdentityCredential
Настройка учетных данных 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>"
}
Примечание.
clientCertificateStoreLocation
additionallyAllowedTenants
Пары "ключ-значение" являются необязательными. Если ключи присутствуют и имеют пустые значения, они игнорируются. Если значение не clientCertificateStoreLocation
указано, используется значение по умолчанию CurrentUser
из X509Credentials.StoreLocation перечисления.
DefaultAzureCredential
Создание типа
Добавьте в файл appsettings.json следующие пары "ключ-значение", чтобы создать Azure.Identity.DefaultAzureCredential:
{
"tenantId": "<tenantId>",
"clientId": "<clientId>",
"managedIdentityResourceId": "<managedIdentityResourceId>"
}
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по