Share via


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/nativeclientURI를 검사.
  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는 구독을 선택하라는 메시지를 표시합니다. 액세스하려는 리소스가 있는 구독을 선택합니다.

Windows에서는 IntelliJ 자격 증명을 읽으려면 KeePass 데이터베이스 경로도 필요합니다. IntelliJ 설정의 파일 > 설정 모양 및 동작 > 시스템 설정 > 암호에서 경로를 찾을 수 있습니다>. KeePassDatabase 경로의 위치를 적어둡니다.

IntelliJ IDEA로 사용자 계정 인증

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

IntelliJCredential intelliJCredential = new IntelliJCredentialBuilder()
  // KeePass configuration isrequired only for Windows. No configuration needed for Linux / Mac.
  .keePassDatabasePath("C:\\Users\\user\\AppData\\Roaming\\JetBrains\\IdeaIC2020.1\\c.kdbx")
  .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();

Visual Studio Code 자격 증명

Visual Studio Code 자격 증명을 사용하면 VS Code가 VS Code Azure 계정 확장과 함께 설치되는 개발 환경에서 인증할 수 있습니다. VS Code IDE에서 로그인한 사용자 정보를 사용하여 Microsoft Entra ID에 대해 애플리케이션을 인증합니다.

VisualStudioCodeCredential용 Visual Studio Code Azure 계정 확장 로그인

Azure 계정 확장Nn 통합은 Visual Studio Code 인증을 처리합니다. 이 인증 형식을 사용하려면 Azure 계정 확장을 설치한 다음, 명령 팔레트 보기를 > 사용하여 Azure: 로그인 명령을 실행합니다. 이 명령은 브라우저 창을 열고 Azure에 로그인할 수 있는 페이지를 표시합니다. 로그인 프로세스를 완료한 후 지시에 따라 브라우저를 닫을 수 있습니다. 애플리케이션을 실행(디버거에서 또는 개발 머신의 아무 곳이나)은 로그인의 자격 증명을 사용합니다.

Visual Studio Code를 사용하여 사용자 계정 인증

다음 예제에서는 Visual Studio Code가 설치되었고 사용자가 Azure 계정으로 로그인한 워크스테이션에서 VisualStudioCodeCredential을 사용하여 azure-security-keyvault-secrets 클라이언트 라이브러리의 SecretClient를 인증하는 방법을 보여줍니다.

VisualStudioCodeCredential visualStudioCodeCredential = new VisualStudioCodeCredentialBuilder().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(visualStudioCodeCredential)
  .buildClient();

다음 단계

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

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

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