Bagikan melalui


Mengautentikasi aplikasi Java yang dihost Azure

Artikel ini melihat bagaimana pustaka Azure Identity mendukung autentikasi token Microsoft Entra untuk aplikasi yang dihosting di Azure. Dukungan ini dimungkinkan melalui serangkaian TokenCredential implementasi, yang dibahas dalam artikel ini.

Artikel ini membahas subjek berikut:

Untuk memecahkan masalah autentikasi yang terkait dengan aplikasi yang dihosting Azure, lihat Memecahkan masalah autentikasi aplikasi yang dihosting Azure.

DefaultAzureCredential

DefaultAzureCredential menggabungkan kredensial yang biasa digunakan untuk mengautentikasi saat disebarkan, dengan kredensial yang digunakan untuk mengautentikasi di lingkungan pengembangan. Untuk informasi selengkapnya, lihat Gambaran umum DefaultAzureCredential.

Mengonfigurasi DefaultAzureCredential

DefaultAzureCredential mendukung serangkaian konfigurasi melalui setter pada variabel DefaultAzureCredentialBuilder atau lingkungan.

  • Mengatur variabel AZURE_CLIENT_IDlingkungan , AZURE_CLIENT_SECRET, dan AZURE_TENANT_ID seperti yang didefinisikan dalam Variabel lingkungan dikonfigurasi DefaultAzureCredential untuk mengautentikasi sebagai perwakilan layanan yang ditentukan oleh nilai.
  • Pengaturan .managedIdentityClientId(String) pada penyusun atau variabel AZURE_CLIENT_ID lingkungan dikonfigurasi DefaultAzureCredential untuk mengautentikasi sebagai identitas terkelola yang ditetapkan pengguna, sambil membiarkannya kosong mengonfigurasinya untuk mengautentikasi sebagai identitas terkelola yang ditetapkan sistem.
  • Pengaturan .tenantId(String) pada penyusun atau variabel AZURE_TENANT_ID lingkungan dikonfigurasi DefaultAzureCredential untuk mengautentikasi ke penyewa tertentu untuk cache token bersama atau IntelliJ IDEA.
  • Mengatur variabel AZURE_USERNAME lingkungan mengonfigurasi DefaultAzureCredential untuk memilih token cache yang sesuai dari cache token bersama.

Mengautentikasi dengan DefaultAzureCredential

Contoh berikut menunjukkan autentikasi SecretClient dari pustaka klien azure-security-keyvault-secrets menggunakan DefaultAzureCredential:

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<KEY_VAULT_NAME>.vault.azure.net")
  .credential(new DefaultAzureCredentialBuilder().build())
  .buildClient();

Mengautentikasi identitas terkelola yang ditetapkan pengguna dengan DefaultAzureCredential

Contoh berikut menunjukkan autentikasi SecretClient dari pustaka klien azure-security-keyvault-secrets menggunakan DefaultAzureCredential yang disebarkan ke sumber daya Azure dengan identitas terkelola yang ditetapkan pengguna yang dikonfigurasi.

/**
 * DefaultAzureCredential uses the user-assigned managed identity with the specified client ID.
 */
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
  .managedIdentityClientId("<CLIENT_ID>")
  .build();

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

Identitas TerkelolaKredensial

ManagedIdentityCredential mengautentikasi identitas terkelola (ditetapkan sistem atau ditetapkan pengguna) dari sumber daya Azure. Jadi, jika aplikasi berjalan di dalam sumber daya Azure yang mendukung identitas terkelola melalui IDENTITY/MSI, IMDS titik akhir, atau keduanya, kredensial ini membuat aplikasi Anda diautentikasi, dan menawarkan pengalaman autentikasi tanpa rahasia.

Untuk informasi selengkapnya, lihat Apa yang dimaksud dengan identitas terkelola untuk sumber daya Azure?.

Mengautentikasi di Azure dengan identitas terkelola:

Contoh berikut menunjukkan autentikasi SecretClient dari pustaka klien azure-security-keyvault-secrets menggunakan ManagedIdentityCredential di komputer virtual, App Service, aplikasi Functions, Cloud Shell, Service Fabric, Arc, atau lingkungan AKS di Azure, dengan identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna diaktifkan.

/**
 * Authenticate with a user-assigned managed identity.
 */
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()
  .clientId("<CLIENT_ID>") // required only for user-assigned
  .build();

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

Variabel lingkungan

Anda dapat mengonfigurasi DefaultAzureCredential dan EnvironmentCredential dengan variabel lingkungan. Setiap jenis autentikasi memerlukan nilai untuk variabel tertentu:

Perwakilan layanan dengan rahasia

Nama variabel Nilai
AZURE_CLIENT_ID ID aplikasi Microsoft Entra.
AZURE_TENANT_ID ID penyewa Microsoft Entra aplikasi.
AZURE_CLIENT_SECRET Salah satu rahasia klien aplikasi.

Perwakilan layanan dengan sertifikat

Nama variabel Nilai
AZURE_CLIENT_ID ID aplikasi Microsoft Entra.
AZURE_TENANT_ID ID penyewa Microsoft Entra aplikasi.
AZURE_CLIENT_CERTIFICATE_PATH Jalur ke file sertifikat yang dikodekan PEM termasuk kunci pribadi (tanpa perlindungan kata sandi).
AZURE_CLIENT_CERTIFICATE_PASSWORD (opsional) Kata sandi file sertifikat, jika ada.
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN (opsional) Kirim rantai sertifikat di header x5c untuk mendukung nama subjek /autentikasi berbasis penerbit.

Nama pengguna dan kata sandi

Nama variabel Nilai
AZURE_CLIENT_ID ID aplikasi Microsoft Entra.
AZURE_TENANT_ID ID penyewa Microsoft Entra aplikasi.
AZURE_USERNAME Nama pengguna (biasanya alamat email).
AZURE_PASSWORD Kata sandi terkait untuk nama pengguna yang diberikan.

Konfigurasi dicoba dalam urutan ini. Misalnya, jika nilai untuk rahasia dan sertifikat klien keduanya ada, maka digunakan rahasia klien.

Langkah berikutnya

Artikel ini membahas autentikasi untuk aplikasi yang dihost di Azure. 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 aplikasi yang dihosting Azure, lihat Memecahkan masalah autentikasi aplikasi yang dihosting Azure.

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