다음을 통해 공유


Azure에서 호스트되는 Java 애플리케이션 인증

이 문서에서는 Azure ID 라이브러리가 Azure에서 호스트되는 애플리케이션에 대해 Microsoft Entra 토큰 인증을 지원하는 방법을 살펴봅니다. 이 지원은 이 문서에서 설명하는 일련의 TokenCredential 구현을 통해 가능합니다.

이 문서에서는 다음 주제에 대해 설명합니다.

Azure 호스팅 애플리케이션과 관련된 인증 문제를 해결하려면 Azure 호스팅 애플리케이션 인증 문제 해결을 참조하세요.

DefaultAzureCredential

DefaultAzureCredential 는 배포 시 인증하는 데 일반적으로 사용되는 자격 증명과 개발 환경에서 인증하는 데 사용되는 자격 증명을 결합합니다. 자세한 내용은 DefaultAzureCredential 개요를 참조하세요.

DefaultAzureCredential 구성

DefaultAzureCredential 는 환경 변수 또는 환경 변수의 setter를 통해 구성 집합을 DefaultAzureCredentialBuilder 지원합니다.

  • 환경 변수를 AZURE_CLIENT_IDAZURE_CLIENT_SECRETAZURE_TENANT_ID 설정하고 환경 변수정의된 대로 값으로 지정된 서비스 주체로 인증하도록 구성 DefaultAzureCredential 합니다.
  • 작성기 또는 환경 변수 AZURE_CLIENT_ID 에 대한 설정 .managedIdentityClientId(String) 은 사용자가 할당한 관리 ID로 인증하도록 구성 DefaultAzureCredential 되지만 비워 두면 시스템 할당 관리 ID로 인증하도록 구성됩니다.
  • 작성기 또는 환경 변수 AZURE_TENANT_ID 에 대한 설정 .tenantId(String) 은 공유 토큰 캐시 또는 IntelliJ IDEA에 대한 특정 테넌트에 인증하도록 구성 DefaultAzureCredential 됩니다.
  • 환경 변수 AZURE_USERNAME 를 설정하면 공유 토큰 캐시에서 캐시된 해당 토큰을 선택하도록 구성 DefaultAzureCredential 됩니다.

DefaultAzureCredential을 사용하여 인증

다음 예제에서는 다음을 사용하여 DefaultAzureCredentialazure-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/MSIIMDS 관리 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();

환경 변수

환경 변수를 사용하여 DefaultAzureCredentialEnvironmentCredential을 구성할 수 있습니다. 각 인증 유형에는 특정 변수에 대한 값이 필요합니다.

비밀을 사용하는 서비스 주체

변수 이름
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에서 로깅 구성을 참조하세요.