Bagikan melalui


Mengautentikasi ke sumber daya Azure dari aplikasi Java yang dihosting secara lokal

Aplikasi yang dihosting di luar Azure, seperti lokal atau di pusat data pihak ketiga, harus menggunakan perwakilan layanan aplikasi melalui Microsoft Entra ID untuk mengautentikasi ke layanan Azure. Di bagian berikut, Anda mempelajari:

  • Cara mendaftarkan aplikasi dengan Microsoft Entra untuk membuat perwakilan layanan.
  • Cara menetapkan peran untuk izin cakupan.
  • Cara mengautentikasi dengan menggunakan prinsipal layanan dari kode aplikasi Anda.

Dengan menggunakan perwakilan layanan aplikasi khusus, Anda dapat mengikuti prinsip hak istimewa paling sedikit saat mengakses sumber daya Azure. Batasi izin ke persyaratan khusus aplikasi selama pengembangan untuk mencegah akses yang tidak disengaja ke sumber daya Azure yang ditujukan untuk aplikasi atau layanan lain. Pendekatan ini juga membantu Anda menghindari masalah saat memindahkan aplikasi ke produksi dengan memastikan aplikasi tidak terlalu istimewa di lingkungan pengembangan.

Buat pendaftaran aplikasi yang berbeda untuk setiap lingkungan tempat Anda menghosting aplikasi. Anda dapat mengonfigurasi izin sumber daya khusus lingkungan untuk setiap perwakilan layanan dan memastikan aplikasi yang disebarkan ke satu lingkungan tidak mengakses sumber daya Azure di lingkungan lain.

Mendaftarkan aplikasi di Azure

Objek prinsip layanan aplikasi dibuat melalui pendaftaran aplikasi di platform Azure menggunakan portal Azure atau Azure CLI.

  1. Di portal Azure, gunakan bilah pencarian untuk menavigasi ke halaman App registrations.

  2. Pada halaman App registrations, pilih + Pendaftaran baru.

  3. Pada halaman Daftarkan aplikasi:

    • Untuk bidang Nama, masukkan nilai deskriptif yang menyertakan nama aplikasi dan lingkungan target.
    • Untuk Jenis akun yang didukung, pilih Akun di direktori organisasi ini saja (Hanya Microsoft Customer Led - Penyewa tunggal), atau opsi mana yang paling sesuai dengan kebutuhan Anda.
  4. Pilih Daftarkan untuk mendaftarkan aplikasi Anda dan buat perwakilan layanan.

    cuplikan layar A memperlihatkan cara membuat pendaftaran aplikasi di portal Azure.

  5. Pada halaman Pendaftaran aplikasi untuk aplikasi Anda, salin ID Aplikasi (klien) dan ID Direktori (penyewa) dan tempelkan di lokasi sementara untuk digunakan nanti dalam konfigurasi kode aplikasi Anda.

  6. Pilih Tambahkan sertifikat atau rahasia untuk menyiapkan kredensial untuk aplikasi Anda.

  7. Pada halaman Sertifikat & rahasia, pilih + Rahasia klien baru.

  8. Pada panel pop-up Tambahkan rahasia klien yang terbuka:

    • Untuk Deskripsi, masukkan nilai Saat Ini.
    • Untuk nilai Kedaluwarsa , biarkan nilai yang direkomendasikan secara default, yaitu 180 hari.
    • Pilih Tambahkan untuk menambahkan rahasia.
  9. Pada halaman Sertifikat & rahasia, salin properti Nilai rahasia klien untuk digunakan dalam langkah selanjutnya.

    Nota

    Nilai rahasia klien hanya ditampilkan sekali setelah pendaftaran aplikasi dibuat. Anda dapat menambahkan lebih banyak rahasia klien tanpa membatalkan rahasia klien ini, tetapi tidak ada cara untuk menampilkan nilai ini lagi.

Menetapkan peran ke perwakilan layanan aplikasi

Selanjutnya, tentukan peran (izin) apa yang dibutuhkan aplikasi Anda pada sumber daya apa dan tetapkan peran tersebut ke perwakilan layanan yang Anda buat. Peran dapat ditetapkan di tingkat sumber daya, grup sumber daya, atau langganan. Contoh ini menunjukkan cara menetapkan peran di cakupan grup sumber daya, karena sebagian besar aplikasi mengelompokkan semua sumber daya Azure mereka ke dalam satu grup sumber daya.

  1. Di portal Azure, navigasikan ke halaman Overview grup sumber daya yang berisi aplikasi Anda.

  2. Pilih Kontrol akses (IAM) dari navigasi kiri.

  3. Pada halaman Kontrol akses (IAM), pilih + Tambahkan lalu pilih Tambahkan penetapan peran dari menu drop-down. Halaman Tambahkan penetapan peran menyediakan beberapa tab untuk mengonfigurasi dan menetapkan peran.

  4. Pada tab Peran , gunakan kotak pencarian untuk menemukan peran yang ingin Anda tetapkan. Pilih peran, lalu pilih Berikutnya.

  5. Pada tab Anggota :

    • Untuk Menetapkan akses ke nilai, pilih Pengguna, grup, atau perwakilan layanan .
    • Untuk nilai Anggota , pilih + Pilih anggota untuk membuka panel flyout Pilih anggota .
    • Cari prinsipal layanan yang Anda buat sebelumnya dan pilih dari hasil yang telah difilter. Pilih Pilih untuk memilih grup dan menutup panel flyout.
    • Pilih Tinjau + tetapkan di bawah tab Anggota.

    Tangkapan layar memperlihatkan cara menetapkan peran ke prinsipal layanan.

  6. Di tab Tinjau & Tetapkan, pilih Tinjau & Tetapkan di bagian bawah halaman.

Mengatur variabel lingkungan aplikasi

Selama waktu proses, kredensial tertentu dari pustaka Azure Identity , seperti , , dan , mencari informasi perwakilan layanan berdasarkan konvensi dalam variabel lingkungan. Saat bekerja dengan Java, Anda dapat mengonfigurasi variabel lingkungan dengan berbagai cara, tergantung pada alat dan lingkungan Anda.

Terlepas dari pendekatan yang Anda pilih, konfigurasikan variabel lingkungan berikut untuk perwakilan layanan:

  • AZURE_CLIENT_ID: Digunakan untuk mengidentifikasi aplikasi terdaftar di Azure.
  • AZURE_TENANT_ID: ID penyewa Microsoft Entra.
  • AZURE_CLIENT_SECRET: Kredensial rahasia yang dihasilkan untuk aplikasi.

Atur variabel lingkungan berikut. Ganti nilai tempat penampung dengan nilai aktual dari pendaftaran aplikasi Anda:

export AZURE_CLIENT_ID="<your-client-id>"
export AZURE_TENANT_ID="<your-tenant-id>"
export AZURE_CLIENT_SECRET="<your-client-secret>"

Untuk aplikasi Java yang berjalan sebagai layanan sistem di server produksi, tentukan variabel lingkungan dalam file dan referensikan dengan arahan EnvironmentFile dalam file unit layanan:

[Unit]
Description=Java application service
After=network.target

[Service]
User=app-user
WorkingDirectory=/path/to/java-app
EnvironmentFile=/path/to/java-app/app-environment-variables
ExecStart=/usr/bin/java -jar app.jar

[Install]
WantedBy=multi-user.target

File lingkungan harus berisi daftar variabel lingkungan dengan nilainya:

AZURE_CLIENT_ID=<your-client-id>
AZURE_TENANT_ID=<your-tenant-id>
AZURE_CLIENT_SECRET=<your-client-secret>

Mengautentikasi ke layanan Azure dari aplikasi Anda

Pustaka identitas Azure menyediakan berbagai credentials - implementasi TokenCredential yang mendukung skenario yang berbeda dan alur autentikasi Microsoft Entra. Langkah-langkah berikut menunjukkan kepada Anda cara menggunakan ClientSecretCredential saat Anda bekerja dengan perwakilan layanan secara lokal dan dalam produksi.

Menerapkan kode

Tambahkan azure-identity dependensi ke file pom.xml Anda:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
</dependency>

Anda mengakses layanan Azure dengan menggunakan kelas klien khusus dari berbagai pustaka klien Azure SDK. Untuk kode Java apa pun yang membuat objek klien Azure SDK di aplikasi Anda, ikuti langkah-langkah berikut:

  1. Impor kelas ClientSecretCredentialBuilder dari paket com.azure.identity.
  2. Buat ClientSecretCredential objek dengan menggunakan ClientSecretCredentialBuilder dengan tenantId, , clientIddan clientSecret.
  3. Teruskan instans ClientSecretCredential ke metode credential penyusun objek klien Azure SDK.

Contoh pendekatan ini ditampilkan di segmen kode berikut:

import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;

String tenantId = System.getenv("AZURE_TENANT_ID");
String clientId = System.getenv("AZURE_CLIENT_ID");
String clientSecret = System.getenv("AZURE_CLIENT_SECRET");

ClientSecretCredential credential = new ClientSecretCredentialBuilder()
    .tenantId(tenantId)
    .clientId(clientId)
    .clientSecret(clientSecret)
    .build();

BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
    .endpoint("https://<account-name>.blob.core.windows.net")
    .credential(credential)
    .buildClient();