Azure에서 호스트되는 Java 애플리케이션 인증
이 문서에서는 Azure ID 라이브러리가 Azure에서 호스트되는 애플리케이션에 대해 Microsoft Entra 토큰 인증을 지원하는 방법을 살펴봅니다. 이 지원은 이 문서에서 설명하는 일련의 TokenCredential
구현을 통해 가능합니다.
이 문서에서는 다음 주제에 대해 설명합니다.
Azure 호스팅 애플리케이션과 관련된 인증 문제를 해결하려면 Azure 호스팅 애플리케이션 인증 문제 해결을 참조하세요.
DefaultAzureCredential
DefaultAzureCredential
는 배포 시 인증하는 데 일반적으로 사용되는 자격 증명과 개발 환경에서 인증하는 데 사용되는 자격 증명을 결합합니다. 자세한 내용은 DefaultAzureCredential 개요를 참조하세요.
DefaultAzureCredential 구성
DefaultAzureCredential
는 환경 변수 또는 환경 변수의 setter를 통해 구성 집합을 DefaultAzureCredentialBuilder
지원합니다.
- 환경 변수를
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
AZURE_TENANT_ID
설정하고 환경 변수에 정의된 대로 값으로 지정된 서비스 주체로 인증하도록 구성DefaultAzureCredential
합니다. - 작성기 또는 환경 변수
AZURE_CLIENT_ID
에 대한 설정.managedIdentityClientId(String)
은 사용자가 할당한 관리 ID로 인증하도록 구성DefaultAzureCredential
되지만 비워 두면 시스템 할당 관리 ID로 인증하도록 구성됩니다. - 작성기 또는 환경 변수
AZURE_TENANT_ID
에 대한 설정.tenantId(String)
은 공유 토큰 캐시 또는 IntelliJ IDEA에 대한 특정 테넌트에 인증하도록 구성DefaultAzureCredential
됩니다. - 환경 변수
AZURE_USERNAME
를 설정하면 공유 토큰 캐시에서 캐시된 해당 토큰을 선택하도록 구성DefaultAzureCredential
됩니다.
DefaultAzureCredential을 사용하여 인증
다음 예제에서는 다음을 사용하여 DefaultAzureCredential
azure-security-keyvault-secrets 클라이언트 라이브러리에서 인증하는 SecretClient
방법을 보여 줍니다.
// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
.vaultUrl("https://<KEY_VAULT_NAME>.vault.azure.net")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
DefaultAzureCredential을 사용하여 사용자 할당 관리 ID 인증
다음 예제에서는 사용자 할당 관리 ID가 SecretClient
구성된 Azure 리소스에 배포된 것을 사용하여 DefaultAzureCredential
azure-security-keyvault-secrets 클라이언트 라이브러리에서 인증하는 방법을 보여 줍니다.
/**
* DefaultAzureCredential uses the user-assigned managed identity with the specified client ID.
*/
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
.managedIdentityClientId("<CLIENT_ID>")
.build();
// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
.vaultUrl("https://<KEY_VAULT_NAME>.vault.azure.net")
.credential(credential)
.buildClient();
ManagedIdentityCredential
ManagedIdentityCredential 은 Azure 리소스의 관리 ID(시스템 할당 또는 사용자 할당)를 인증합니다. 따라서 애플리케이션이 , 엔드포인트 또는 둘 다를 통해 IDENTITY/MSI
IMDS
관리 ID를 지원하는 Azure 리소스 내에서 실행되는 경우 이 자격 증명은 애플리케이션을 인증하고 비밀 없는 인증 환경을 제공합니다.
자세한 내용은 Azure 리소스에 대한 관리 ID란?을 참조하세요.
관리 ID를 사용하여 Azure에서 인증
다음 예제에서는 시스템 할당 또는 사용자 할당 관리 ID를 SecretClient
사용하도록 설정된 Azure의 Virtual Machine, App Service, Functions 앱, Cloud Shell, Service Fabric, Arc 또는 AKS 환경을 사용하여 ManagedIdentityCredential
azure-security-keyvault-secrets 클라이언트 라이브러리에서 인증하는 방법을 보여 줍니다.
/**
* Authenticate with a user-assigned managed identity.
*/
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()
.clientId("<CLIENT_ID>") // required only for user-assigned
.build();
// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
.vaultUrl("https://<KEY_VAULT_NAME>.vault.azure.net")
.credential(credential)
.buildClient();
환경 변수
환경 변수를 사용하여 DefaultAzureCredential
및 EnvironmentCredential
을 구성할 수 있습니다. 각 인증 유형에는 특정 변수에 대한 값이 필요합니다.
비밀을 사용하는 서비스 주체
변수 이름 | 값 |
---|---|
AZURE_CLIENT_ID |
Microsoft Entra 애플리케이션의 ID입니다. |
AZURE_TENANT_ID |
애플리케이션의 Microsoft Entra 테넌트의 ID입니다. |
AZURE_CLIENT_SECRET |
애플리케이션의 클라이언트 암호 중 하나 |
인증서가 있는 서비스 주체
변수 이름 | 값 |
---|---|
AZURE_CLIENT_ID |
Microsoft Entra 애플리케이션의 ID입니다. |
AZURE_TENANT_ID |
애플리케이션의 Microsoft Entra 테넌트의 ID입니다. |
AZURE_CLIENT_CERTIFICATE_PATH |
개인 키(암호 보호 제외)를 포함하여 PEM으로 인코딩된 인증서 파일의 경로입니다. |
AZURE_CLIENT_CERTIFICATE_PASSWORD |
(선택 사항) 인증서 파일의 암호(있는 경우)입니다. |
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN |
(선택 사항) 주체 이름/발급자 기반 인증을 지원하기 위해 x5c 헤더로 인증서 체인을 보냅니다. |
사용자 이름 및 암호
변수 이름 | 값 |
---|---|
AZURE_CLIENT_ID |
Microsoft Entra 애플리케이션의 ID입니다. |
AZURE_TENANT_ID |
애플리케이션의 Microsoft Entra 테넌트의 ID입니다. |
AZURE_USERNAME |
사용자 이름(일반적으로 이메일 주소) |
AZURE_PASSWORD |
지정된 사용자 이름에 대한 연결된 암호입니다. |
구성은 이 순서대로 시도됩니다. 예를 들어 클라이언트 암호와 인증서에 대한 값이 모두 있는 경우 클라이언트 암호가 사용됩니다.
다음 단계
이 문서에서는 Azure에서 호스트되는 애플리케이션에 대한 인증을 설명했습니다. 이 인증 형식은 Java용 Azure SDK에서 인증할 수 있는 여러 방법 중 하나입니다. 다음 문서에서는 다른 방법을 설명합니다.
Azure 호스팅 애플리케이션 인증과 관련된 문제가 발생하는 경우 Azure 호스팅 애플리케이션 인증 문제 해결을 참조하세요.
인증을 마스터한 후 SDK에서 제공하는 로깅 기능에 대한 자세한 내용은 Java용 Azure SDK에서 로깅 구성을 참조하세요.