다음을 통해 공유


서비스 주체를 사용한 Azure 인증

이 문서에서는 Azure ID 라이브러리가 서비스 주체를 통해 Microsoft Entra 토큰 인증을 지원하는 방법을 살펴봅니다. 이 문서에서는 다음 주제에 대해 설명합니다.

자세한 내용은 Microsoft Entra ID의 애플리케이션 및 서비스 주체 개체를 참조하세요. 서비스 주체 인증 문제를 해결하려면 서비스 주체 인증 문제 해결을 참조하세요.

Azure CLI를 사용하여 서비스 주체 만들기

다음 Azure CLI 예제를 사용하여 클라이언트 비밀 자격 증명을 만들거나 가져옵니다.

다음 명령을 사용하여 서비스 주체를 만들고 Azure 리소스에 대한 액세스를 구성합니다.

az ad sp create-for-rbac \
    --name <your application name> \
    --role Contributor \
    --scopes /subscriptions/mySubscriptionID

이 명령은 다음 출력과 유사한 값을 반환합니다.

{
"appId": "generated-app-ID",
"displayName": "dummy-app-name",
"name": "http://dummy-app-name",
"password": "random-password",
"tenant": "tenant-ID"
}

다음 명령을 사용하여 인증서와 함께 서비스 주체를 만듭니다. 이 인증서의 경로/위치를 적어둡니다.

az ad sp create-for-rbac \
    --name <your application name> \
    --role Contributor \
    --cert <certificate name> \
    --create-cert

반환된 자격 증명을 확인하고 다음 정보를 적어 둡니다.

  • appId의 경우 AZURE\_CLIENT\_ID입니다.
  • AZURE\_CLIENT\_SECRET 암호를 입력합니다.
  • AZURE\_TENANT\_ID 테넌트에 대한

클라이언트 암호 자격 증명

이 자격 증명은 클라이언트 암호(암호)를 통해 만든 서비스 주체를 인증합니다. 이 예제에서는 ClientSecretCredential을 사용하여 azure-security-keyvault-secrets 클라이언트 라이브러리에서 SecretClient를 인증하는 방법을 보여줍니다.

/**
 *  Authenticate with client secret.
 */
ClientSecretCredential clientSecretCredential = new ClientSecretCredentialBuilder()
  .clientId("<your client ID>")
  .clientSecret("<your client secret>")
  .tenantId("<your tenant ID>")
  .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(clientSecretCredential)
  .buildClient();

클라이언트 인증서 자격 증명

이 자격 증명은 클라이언트 인증서를 통해 만들어진 서비스 주체를 인증합니다. 이 예제에서는 ClientCertificateCredential을 사용하여 azure-security-keyvault-secrets 클라이언트 라이브러리에서 SecretClient를 인증하는 방법을 보여줍니다.

/**
 *  Authenticate with a client certificate.
 */
ClientCertificateCredential clientCertificateCredential = new ClientCertificateCredentialBuilder()
  .clientId("<your client ID>")
  .pemCertificate("<path to PEM certificate>")
  // Choose between either a PEM certificate or a PFX certificate.
  //.pfxCertificate("<path to PFX certificate>", "PFX CERTIFICATE PASSWORD")
  .tenantId("<your tenant ID>")
  .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(clientCertificateCredential)
  .buildClient();

다음 단계

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

서비스 주체 인증과 관련된 문제가 발생하는 경우 서비스 주체 인증 문제 해결을 참조하세요.

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