다음을 통해 공유


사용자 자격 증명을 사용한 Azure 인증

이 문서에서는 Azure ID 라이브러리가 사용자가 제공한 자격 증명을 사용하여 Microsoft Entra 토큰 인증을 지원하는 방법을 살펴봅니다. 이 지원은 이 문서에서 설명하는 일련의 TokenCredential 구현을 통해 가능합니다.

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

사용자 자격 증명 인증 문제를 해결하려면 사용자 자격 증명 인증 문제 해결을 참조하세요.

디바이스 코드 자격 증명

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

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

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

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

  1. Azure Portal에서 Microsoft Entra ID로 이동하여 앱 등록을 찾습니다.
  2. 인증 섹션으로 이동합니다.
  3. 제안된 리디렉션된 URI 아래에서 ./common/oauth2/nativeclient
  4. 기본 클라이언트 유형에서 Treat application as a public client에 대해 yes를 선택합니다.

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

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

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

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

다음 예제에서는 IoT 디바이스에서 Java DeviceCodeCredential 용 Azure Key Vault 비밀 클라이언트 라이브러리에서 인증하는 SecretClient 방법을 보여 줍니다.

/**
 * Authenticate with device code credential.
 */
DeviceCodeCredential deviceCodeCredential = new DeviceCodeCredentialBuilder()
    .challengeConsumer(challenge -> {
    // Lets the user know about 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에 등록해야 합니다. 디바이스 코드 흐름에 대한 이전 단계에 따라 애플리케이션을 등록합니다. 앞에서 설명한 것처럼 테넌트 관리자는 모든 사용자 계정이 로그인하기 전에 애플리케이션에 동의를 부여해야 합니다.

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

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

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

/**
 * Authenticate interactively in the browser.
 */
InteractiveBrowserCredential interactiveBrowserCredential = new InteractiveBrowserCredentialBuilder()
    .clientId("<your app client ID>")
    .redirectUrl("YOUR_APP_REGISTERED_REDIRECT_URL")
    .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();

사용자 이름 암호 자격 증명

UsernamePasswordCredential 단계 인증이 필요하지 않은 사용자 자격 증명을 사용하여 공용 클라이언트 애플리케이션을 인증하는 데 도움이 됩니다. 다음 예제에서는 UsernamePasswordCredential을 사용하여 azure-security-keyvault-secrets 클라이언트 라이브러리에서 SecretClient를 인증하는 방법을 보여줍니다. 사용자는 다단계 인증을 사용하지 않아야 합니다.

/**
 * Authenticate with username, password.
 */
UsernamePasswordCredential usernamePasswordCredential = new UsernamePasswordCredentialBuilder()
    .clientId("<your app client ID>")
    .username("<your username>")
    .password("<your password>")
    .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(usernamePasswordCredential)
    .buildClient();

자세한 내용은 Microsoft ID 플랫폼 및 OAuth 2.0 리소스 소유자 암호 자격 증명을 참조하세요.

다음 단계

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

사용자 자격 증명 인증과 관련된 문제가 발생하는 경우 사용자 자격 증명 인증 문제 해결을 참조하세요.

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