다음을 통해 공유


Java 개발 환경에서 Azure 인증

이 문서에서는 Microsoft Entra 토큰 인증에 대한 Azure ID 라이브러리 지원에 대한 개요를 제공합니다. 이 지원을 통해 일련의 TokenCredential 구현을 통해 개발자 컴퓨터에서 로컬로 실행되는 애플리케이션에 대한 인증을 사용할 수 있습니다.

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

개발 환경 인증 문제를 해결하려면 개발 환경 인증 문제 해결을 참조하세요.

디바이스 코드 자격 증명

디바이스 코드 자격 증명은 제한된 UI를 사용하여 디바이스에서 사용자를 대화형으로 인증합니다. 애플리케이션이 인증을 시도할 때 브라우저 사용 컴퓨터에서 로그인 URL을 방문하라는 메시지를 표시하여 작동합니다. 그런 다음, 사용자는 로그인 자격 증명과 함께 지침에 언급된 디바이스 코드를 입력합니다. 인증에 성공하면 인증을 요청한 애플리케이션이 실행 중인 디바이스에서 성공적으로 인증됩니다.

자세한 내용은 Microsoft ID 플랫폼 및 OAuth 2.0 디바이스 권한 부여 흐름을 참조하세요.

디바이스 코드 흐름에 대한 애플리케이션 사용

디바이스 코드 흐름을 통해 사용자를 인증하려면 다음 단계를 수행합니다.

  1. Azure Portal에서 Microsoft Entra ID로 이동하여 앱 등록을 찾습니다.
  2. 인증 섹션으로 이동합니다.
  3. 제안된 리디렉션된 URI 아래에서 ./common/oauth2/nativeclient
  4. 기본 클라이언트 유형에서 애플리케이션을 공용 클라이언트로 처리하려면 예를 선택합니다.

이러한 단계를 통해 애플리케이션은 인증할 수 있지만 Microsoft Entra ID에 로그인하거나 사용자를 대신하여 리소스에 액세스할 수 있는 권한이 아직 없습니다. 이 문제를 해결하려면 API 권한으로 이동하고 Microsoft Graph 및 액세스하려는 리소스를 사용하도록 설정합니다.

또한 처음 로그인할 때 애플리케이션에 동의를 부여하려면 테넌트의 관리자여야만 합니다.

Microsoft Entra ID에서 디바이스 코드 흐름 옵션을 구성할 수 없는 경우 앱이 다중 테넌트여야 할 수 있습니다. 앱을 다중 테넌트로 만들려면 인증 패널로 이동한 다음, 조직 디렉터리의 계정을 선택합니다. 그런 다음 애플리케이션을 공용 클라이언트로 처리하려면 예를 선택합니다.

디바이스 코드 흐름을 사용하여 사용자 계정 인증

다음 예제에서는 IoT 디바이스를 사용하여 azure-security-keyvault-secrets 클라이언트 라이브러리에서 인증하는 SecretClient 방법을 DeviceCodeCredential 보여 줍니다.

DeviceCodeCredential deviceCodeCredential = new DeviceCodeCredentialBuilder()
  .challengeConsumer(challenge -> {
    // lets user know of the challenge
    System.out.println(challenge.getMessage());
  }).build();

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(deviceCodeCredential)
  .buildClient();

대화형 브라우저 자격 증명

이 자격 증명은 기본 시스템 브라우저를 사용하여 사용자를 대화형으로 인증하고 사용자 자신의 자격 증명을 사용하여 애플리케이션을 인증할 수 있도록 하여 원활한 인증 환경을 제공합니다.

대화형 브라우저 OAuth 2 흐름에 대한 애플리케이션 사용

사용 InteractiveBrowserCredential하려면 사용자를 대신하여 로그인할 수 있는 권한이 있는 애플리케이션을 Microsoft Entra ID에 등록해야 합니다. 디바이스 코드 흐름에 대한 이전 단계에 따라 애플리케이션을 등록합니다. 앞에서 설명한 것처럼 테넌트 관리자는 모든 사용자 계정이 로그인하기 전에 애플리케이션에 동의를 부여해야 합니다.

에서 InteractiveBrowserCredentialBuilder리디렉션 URL이 필요하다는 것을 알 수 있습니다. 등록된 Microsoft Entra 애플리케이션의 인증 섹션 아래에 리디렉션 URL을 리디렉션 URI 하위 섹션에 추가합니다.

브라우저에서 대화형으로 사용자 계정 인증

다음 예제에서는 InteractiveBrowserCredential을 사용하여 azure-security-keyvault-secrets 클라이언트 라이브러리에서 SecretClient를 인증하는 방법을 보여줍니다.

InteractiveBrowserCredential interactiveBrowserCredential = new InteractiveBrowserCredentialBuilder()
  .clientId("<your client ID>")
  .redirectUrl("http://localhost:8765")
  .build();

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(interactiveBrowserCredential)
  .buildClient();

Azure CLI 자격 증명

Azure CLI 자격 증명은 Azure CLI에서 사용하도록 설정된 사용자 또는 서비스 주체를 사용하여 개발 환경에서 인증합니다. 이미 로그인한 사용자가 지정된 Azure CLI를 사용하고 CLI를 사용하여 Microsoft Entra ID에 대해 애플리케이션을 인증합니다.

AzureCliCredential용 Azure CLI 로그인

다음 Azure CLI 명령을 사용하여 사용자로 로그인합니다.

az login

다음 명령을 사용하여 서비스 주체로 로그인합니다.

az login \
    --service-principal \
    --username <client-ID> \
    --password <client-secret> \
    --tenant <tenant-ID>

계정 또는 서비스 주체가 여러 테넌트에 액세스할 수 있는 경우 다음 명령의 출력에서 원하는 테넌트 또는 구독이 "사용" 상태인지 확인합니다.

az account list

코드에서 사용하기 AzureCliCredential 전에 다음 명령을 실행하여 계정이 성공적으로 구성되었는지 확인합니다.

az account get-access-token

조직의 새로 고침 토큰 유효성에 따라 일정 기간 후에 이 프로세스를 반복해야 할 수 있습니다. 일반적으로 새로 고침 토큰 유효 기간은 몇 주에서 몇 개월입니다. AzureCliCredential 는 다시 로그인하라는 메시지를 표시합니다.

Azure CLI로 사용자 계정 인증

다음 예제에서는 Azure CLI가 설치되고 로그인된 워크스테이션을 사용하여 AzureCliCredential azure-security-keyvault-secrets 클라이언트 라이브러리에서 인증하는 SecretClient 방법을 보여 줍니다.

AzureCliCredential cliCredential = new AzureCliCredentialBuilder().build();

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(cliCredential)
  .buildClient();

IntelliJ 자격 증명

IntelliJ 자격 증명은 IntelliJ용 Azure 도구 키트의 계정으로 개발 환경에서 인증합니다. IntelliJ IDE에서 로그인한 사용자 정보를 사용하고 이를 사용하여 Microsoft Entra ID에 대해 애플리케이션을 인증합니다.

IntelliJCredential용 IntelliJ용 Azure 도구 키트 로그인

다음 단계를 사용하여 로그인합니다.

  1. IntelliJ 창에서 파일 설정 > 플러그 인을 엽니다.>
  2. 마켓플레이스에서 "IntelliJ용 Azure 도구 키트"를 검색합니다. IDE를 설치하고 다시 시작합니다.
  3. 새 메뉴 항목 찾기 도구 > Azure > Azure 로그인
  4. 디바이스 로그인은 사용자 계정으로 로그인하는 데 도움이 됩니다. 지침에 따라 디바이스 코드를 사용하여 웹 사이트에 login.microsoftonline.com 로그인합니다. IntelliJ는 구독을 선택하라는 메시지를 표시합니다. 액세스하려는 리소스가 있는 구독을 선택합니다.

IntelliJ IDEA로 사용자 계정 인증

다음 예제에서는 IntelliJ IDEA가 설치되어 있고 사용자가 Azure 계정으로 IntelliJ용 Azure 도구 키트에 로그인한 워크스테이션을 사용하여 IntelliJCredential azure-security-keyvault-secrets 클라이언트 라이브러리에서 인증하는 방법을 보여 SecretClient 줍니다.

IntelliJCredential intelliJCredential = new IntelliJCredentialBuilder()
  .build();

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(intelliJCredential)
  .buildClient();

다음 단계

이 문서에서는 컴퓨터에서 사용할 수 있는 자격 증명을 사용하여 개발 중 인증에 대해 설명했습니다. 이 인증 형식은 Java용 Azure SDK에서 인증할 수 있는 여러 방법 중 하나입니다. 다음 문서에서는 다른 방법을 설명합니다.

개발 환경 인증과 관련된 문제가 발생하는 경우 개발 환경 인증 문제 해결을 참조하세요.

인증을 마스터한 후 SDK에서 제공하는 로깅 기능에 대한 자세한 내용은 Java용 Azure SDK에서 로깅 구성을 참조하세요.