ASP.NET Core()Microsoft.Extensions.Azure은 Azure.Core.TokenCredential 및 기타 구성 파일에 정의된 키-값 쌍에서 다양한 형식을 만들 수 있습니다. 자격 증명은 Azure ID 클라이언트 라이브러리에 있는 자격 증명 클래스 의 하위 집합에 해당합니다. 이 문서에서는 다양한 TokenCredential 형식에 대한 지원과 각 형식에 필요한 키-값 쌍을 구성하는 방법을 설명합니다.
구성을 통한 Azure 자격 증명 지원
Microsoft.Extensions.Azure는 .NET의 추상화를 사용하여 자격 증명 값에 대해 TokenCredential 또는 기타 구성 파일을 검색함으로써 Azure 서비스 클라이언트에 클래스 추상을 자동으로 제공할 수 있습니다. 이 방식을 사용하면 개발자는 앱 코드를 직접 통하지 않고 구성을 통해 다양한 환경에서 자격 증명 값을 명시적으로 설정할 수 있습니다.
구성을 통해 다음 자격 증명을 만들 수 있습니다.
- AzurePipelines자격 증명
- 클라이언트 인증서 자격 증명
- ClientSecretCredential
- DefaultAzureCredential
- ManagedIdentity자격 증명
- WorkloadIdentityCredential
Azure 자격 증명 구성
AddAzureClients 확장 메서드를 통해 명시적인 자격 증명이 제공되지 않으면 DefaultAzureCredential 메서드로 등록된 Azure 서비스 클라이언트가 WithCredential 인스턴스로 자동으로 구성됩니다. 클라이언트를 등록하여 특정 자격 증명을 만들 때 구성 파일의 자격 증명 값을 사용하여 전역 DefaultAzureCredential 을 재정의할 수도 있습니다.
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");
});
관련 appsettings.json 파일:
"Storage": {
"serviceUri": "<service_uri>",
"credential": "managedidentity",
"clientId": "<client_id>"
}
다음 자격 증명은 자격 증명이 토큰을 획득할 수 있는 기본 테넌트 외의 Microsoft Entra 테넌트를 지정하는 AdditionallyAllowedTenants 속성을 지원합니다.
- AzurePipelines자격 증명
- 클라이언트 인증서 자격 증명
- ClientSecretCredential
- DefaultAzureCredential
- WorkloadIdentityCredential
로그인한 계정에서 액세스할 수 있는 모든 Microsoft Entra 테넌트에 대한 토큰을 획득할 수 있도록 자격 증명에 와일드카드 값을 * 추가합니다. 테넌트 ID가 지정되지 않은 경우 이 옵션은 해당 인증 방법에 영향을 주지 않으며 자격 증명은 해당 메서드를 사용할 때 요청된 테넌트에 대한 토큰을 획득합니다.
{
"additionallyAllowedTenants": "<tenant_ids_separated_by_semicolon>"
}
의 인스턴스 만들기 ManagedIdentityCredential
구성 값을 사용하여 다음과 같은 방법으로 관리 ID를 활용하도록 자격 증명을 구성할 수 있습니다.
- 시스템 할당 관리 ID
- 사용자가 할당한 관리 ID
- 관리형 ID를 페더레이션 자격 증명으로 사용하기
인스턴스 Azure.Identity.ManagedIdentityCredential를 만들려면 appsettings.json 파일에 다음 키-값 쌍을 추가합니다.
시스템 할당 관리 ID
{
"credential": "managedidentity"
}
사용자가 할당한 관리 ID
클라이언트 ID, 리소스 ID 또는 개체 ID를 제공하여 사용자 할당 관리 ID를 사용할 수 있습니다.
{
"credential": "managedidentity",
"managedIdentityClientId": "<managed_identity_client_id>"
}
관리형 ID를 페더레이션 자격 증명으로 사용하기
페더레이션 ID 자격 증명 기능으로서의 관리 ID는 버전 1.12.0 이상에서 Microsoft.Extensions.Azure 지원됩니다. 이 기능은 시스템 할당 관리 ID에서 작동하지 않습니다. 클라이언트 ID, 리소스 ID 또는 개체 ID를 제공하여 사용자 할당 관리 ID로 자격 증명을 구성할 수 있습니다.
{
"credential": "managedidentityasfederatedidentity",
"azureCloud": "<azure_cloud>",
"tenantId": "<tenant_id>",
"clientId": "<client_id>",
"managedIdentityClientId": "<managed_identity_client_id>"
}
azureCloud 키 값은 Microsoft Entra 액세스 토큰 범위를 설정하는 데 사용됩니다. 다음 값 중 하나일 수 있습니다.
-
publicAzure 퍼블릭 클라우드용 -
usgovAzure 미국 정부 클라우드용 -
china21Vianet에서 운영하는 Azure의 경우
의 인스턴스 만들기 AzurePipelinesCredential
인스턴스 Azure.Identity.AzurePipelinesCredential를 만들려면 appsettings.json 파일에 다음 키-값 쌍을 추가합니다.
{
"credential": "azurepipelines",
"clientId": "<client_id>",
"tenantId": "<tenant_id>",
"serviceConnectionId": "<service_connection_id>",
"systemAccessToken": "<system_access_token>"
}
중요합니다
AzurePipelinesCredential 는 Microsoft.Extensions.Azure 버전 1.11.0 이상에서 지원됩니다.
의 인스턴스 만들기 WorkloadIdentityCredential
인스턴스 Azure.Identity.WorkloadIdentityCredential를 만들려면 appsettings.json 파일에 다음 키-값 쌍을 추가합니다.
{
"credential": "workloadidentity",
"tenantId": "<tenant_id>",
"clientId": "<client_id>",
"tokenFilePath": "<token_file_path>"
}
의 인스턴스 만들기 ClientSecretCredential
인스턴스 Azure.Identity.ClientSecretCredential를 만들려면 appsettings.json 파일에 다음 키-값 쌍을 추가합니다.
{
"tenantId": "<tenant_id>",
"clientId": "<client_id>",
"clientSecret": "<client_secret>"
}
의 인스턴스 만들기 ClientCertificateCredential
인스턴스 Azure.Identity.ClientCertificateCredential를 만들려면 appsettings.json 파일에 다음 키-값 쌍을 추가합니다.
{
"tenantId": "<tenant_id>",
"clientId": "<client_id>",
"clientCertificate": "<client_certificate>",
"clientCertificateStoreLocation": "<client_certificate_store_location>"
}
참고 항목
키는 clientCertificateStoreLocation 선택 사항입니다. 키인 경우:
- 존재하고 빈 값을 가지고 있으며 무시됩니다.
- 기본값
CurrentUser이 존재하지 않을 경우, 기본값은 X509Credentials.StoreLocation 열거형에서 사용됩니다.
의 인스턴스 만들기 DefaultAzureCredential
인스턴스 Azure.Identity.DefaultAzureCredential를 만들려면 appsettings.json 파일에 다음 키-값 쌍을 추가합니다.
{
"tenantId": "<tenant_id>",
"clientId": "<client_id>",
"managedIdentityResourceId": "<managed_identity_resource_id>"
}
.NET