Share via


구성 파일을 사용하여 Microsoft Entra 자격 증명 형식 만들기

Microsoft.Extensions.Azure 라이브러리는 appsettings.json 및 기타 구성 파일에 정의된 키-값 쌍에서 다양한 Azure.Core.TokenCredential 형식 만들기를 지원합니다. 자격 증명 형식은 Azure ID 클라이언트 라이브러리에 있는 자격 증명 클래스의 하위 집합에 해당합니다. 이 문서에서는 다양한 TokenCredential 형식에 대한 지원과 각 형식에 필요한 키-값 쌍을 구성하는 방법을 설명합니다.

구성을 통한 Azure 자격 증명 지원

Microsoft.Extensions.Azure 라이브러리는 .NET용 IConfiguration 추상화를 사용하여 자격 증명 값에 대한 appsettings.json 또는 기타 구성 파일을 검색하여 Azure 서비스 클라이언트에 TokenCredential 클래스를 자동으로 제공할 수 있습니다. 이 방식을 사용하면 개발자는 앱 코드를 직접 통하지 않고 구성을 통해 다양한 환경에서 자격 증명 값을 명시적으로 설정할 수 있습니다.

구성을 통해 다음 자격 증명 형식이 지원됩니다.

Azure 자격 증명 구성

WithCredential 확장 메서드를 통해 명시적인 자격 증명이 제공되지 않으면 AddAzureClients 메서드로 등록된 Azure 서비스 클라이언트가 DefaultAzureCredential 인스턴스로 자동으로 구성됩니다. 특정 자격 증명 형식을 만들기 위해 클라이언트를 등록할 때 구성 파일의 자격 증명 값을 사용하여 전역 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>"
}

다음 자격 증명 형식은 자격 증명이 토큰을 획득할 수 있는 기본 테넌트 외에 추가 Microsoft Entra 테넌트를 지정하는 AdditionallyAllowedTenants 속성도 지원합니다.

로그인한 계정이 액세스할 수 있는 모든 Microsoft Entra 테넌트에 대한 토큰을 자격 증명이 획득할 수 있도록 하려면 와일드카드 값 "*"를 추가합니다. 테넌트 ID가 지정되지 않은 경우 이 옵션은 해당 인증 방법에 영향을 주지 않으며 해당 방법을 사용할 때 자격 증명은 요청된 테넌트에 대한 토큰을 획득합니다.

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

ManagedIdentityCredential 형식 만들기

구성 값을 사용하여 사용자 할당 및 시스템 할당 관리 ID를 모두 만들 수 있습니다. appsettings.json 파일에 다음 키-값 쌍을 추가하여 Azure.Identity.ManagedIdentityCredential의 인스턴스를 만듭니다.

사용자 할당 관리 ID

클라이언트 ID를 통해 사용자 할당 관리 ID를 할당합니다.

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

또는 리소스 ID를 통해 사용자가 할당한 관리 ID를 할당합니다.

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

리소스 ID는 /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName} 형식을 취합니다.

시스템 할당 관리 ID

{
    "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이 지정되지 않으면 X509Credentials.StoreLocation 열거형의 기본 CurrentUser가 사용됩니다.

DefaultAzureCredential 형식 만들기

appsettings.json 파일에 다음 키-값 쌍을 추가하여 Azure.Identity.DefaultAzureCredential을 만듭니다.

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