Bagikan melalui


Autentikasi Azure dengan perwakilan layanan

Artikel ini melihat bagaimana pustaka Azure Identity mendukung autentikasi token Microsoft Entra melalui perwakilan layanan. Artikel ini membahas subjek berikut:

Untuk informasi selengkapnya, lihat Objek perwakilan aplikasi dan layanan di ID Microsoft Entra. Untuk pemecahan masalah autentikasi perwakilan layanan, lihat Memecahkan masalah autentikasi perwakilan layanan.

Membuat perwakilan layanan menggunakan Azure CLI

Gunakan contoh Azure CLI berikut untuk membuat atau mendapatkan kredensial rahasia klien.

Jalankan perintah berikut untuk membuat perwakilan layanan dan mengonfigurasi aksesnya ke sumber daya Azure:

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

Perintah ini menghasilkan nilai yang mirip dengan teks berikut:

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

Jalankan perintah berikut untuk membuat perwakilan layanan bersama dengan sertifikat. Catat jalur/lokasi sertifikat ini.

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

Periksa kredensial yang dihasilkan dan catat informasi berikut:

  • AZURE\_CLIENT\_ID untuk appId.
  • AZURE\_CLIENT\_SECRET untuk kata sandi.
  • AZURE\_TENANT\_ID untuk penyewa.

Kredensial rahasia klien

Kredensial ini mengautentikasi perwakilan layanan yang dibuat melalui rahasia kliennya (kata sandi). Contoh berikut menunjukkan cara mengautentikasi SecretClient dari pustaka klien azure-security-keyvault-secrets menggunakan ClientSecretCredential.

/**
 *  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();

Kredensial sertifikat klien

Kredensial ini mengautentikasi perwakilan layanan yang dibuat melalui sertifikat kliennya. Contoh berikut menunjukkan cara mengautentikasi SecretClient dari pustaka klien azure-security-keyvault-secrets menggunakan ClientCertificateCredential.

/**
 *  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();

Langkah berikutnya

Artikel ini membahas autentikasi melalui perwakilan layanan. Bentuk autentikasi ini adalah salah satu dari beberapa cara yang dapat Anda gunakan untuk melakukan autentikasi di Azure SDK for Java. Artikel berikut menjelaskan cara yang lain:

Jika Anda mengalami masalah yang terkait dengan autentikasi perwakilan layanan, lihat Memecahkan masalah autentikasi perwakilan layanan.

Setelah Anda menguasai autentikasi, lihat Mengonfigurasi pengelogan di Azure SDK for Java untuk informasi tentang fungsi pencatatan yang disediakan oleh SDK.