Autentikasi aplikasi JavaScript ke layanan Azure saat pengembangan lokal menggunakan prinsipal layanan

Selama pengembangan lokal, aplikasi perlu mengautentikasi ke Azure untuk mengakses berbagai layanan Azure. Dua pendekatan umum untuk autentikasi lokal adalah menggunakan akun pengembang atau perwakilan layanan. Artikel ini menjelaskan cara menggunakan identitas utama layanan aplikasi. Di bagian berikut, Anda mempelajari:

  • Cara mendaftarkan aplikasi dengan Microsoft Entra untuk membuat perwakilan layanan
  • Cara menggunakan grup Microsoft Entra untuk mengelola izin secara efisien
  • Cara mengatur peran pada izin cakupan
  • Cara melakukan autentikasi menggunakan perwakilan layanan atau service principal dari kode aplikasi Anda

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

Diagram yang menunjukkan bagaimana aplikasi JavaScript selama pengembangan lokal menggunakan kredensial pengembang untuk terhubung ke Azure dengan mendapatkan kredensial tersebut alat pengembangan yang diinstal secara lokal.

Saat mendaftarkan aplikasi di Azure, Anda membuat prinsipal layanan aplikasi. Untuk pengembangan lokal:

  • Buat pendaftaran aplikasi terpisah untuk setiap pengembang yang bekerja di aplikasi sehingga setiap pengembang memiliki perwakilan layanan aplikasi mereka sendiri dan tidak perlu berbagi kredensial.
  • Buat pendaftaran aplikasi terpisah untuk setiap aplikasi untuk membatasi izin aplikasi hanya untuk apa yang diperlukan.

Selama pengembangan lokal, atur variabel lingkungan dengan identitas perwakilan layanan aplikasi. Pustaka Azure Identity membaca variabel lingkungan ini untuk mengautentikasi aplikasi ke sumber daya Azure yang diperlukan.

Mendaftarkan aplikasi di Azure

Objek principal layanan aplikasi dibuat melalui pendaftaran aplikasi di Azure dengan menggunakan portal Azure atau Azure CLI.

  1. Di portal Microsoft Azure, gunakan bilah pencarian untuk menavigasi ke halaman Pendaftaran aplikasi.

  2. Pada halaman Pendaftaran aplikasi, 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 yang menunjukkan cara membuat pendaftaran aplikasi di portal Microsoft 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 Buat 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.

Membuat grup Microsoft Entra untuk pengembangan lokal

Buat grup Microsoft Entra untuk merangkum peran (izin) yang dibutuhkan aplikasi dalam pengembangan lokal daripada menetapkan peran ke objek principal layanan individual. Pendekatan ini menawarkan keuntungan berikut:

  • Setiap pengembang memiliki peran yang sama yang ditetapkan di tingkat grup.
  • Jika peran baru diperlukan untuk aplikasi, peran tersebut hanya perlu ditambahkan ke grup untuk aplikasi.
  • Jika pengembang baru bergabung dengan tim, perwakilan layanan aplikasi baru dibuat untuk pengembang dan ditambahkan ke grup, memastikan pengembang memiliki izin yang tepat untuk mengerjakan aplikasi.
  1. Navigasi ke halaman gambaran umum ID Microsoft Entra di portal Microsoft Azure.

  2. Pilih Semua grup dari menu sebelah kiri.

  3. Pada halaman Grup , pilih Grup baru.

  4. Pada halaman Grup baru , isi bidang formulir berikut ini:

    • Jenis grup: Pilih Keamanan.
    • Nama grup: Masukkan nama untuk grup yang menyertakan referensi ke aplikasi atau nama lingkungan.
    • Deskripsi grup: Masukkan deskripsi yang menjelaskan tujuan grup.

    Cuplikan layar memperlihatkan cara membuat grup di portal Microsoft Azure.

  5. Pilih link Tidak ada anggota yang dipilih di bawah Anggota untuk menambahkan anggota ke grup.

  6. Di panel pop-up yang terbuka, cari prinsipal layanan yang Anda buat sebelumnya dan pilih dari hasil yang sudah difilter. Pilih tombol Pilih di bagian bawah panel untuk mengonfirmasi pilihan Anda.

  7. Pilih Buat di bagian bawah halaman Grup baru untuk membuat grup dan kembali ke halaman Semua grup . Jika Anda tidak melihat grup baru tercantum, tunggu sebentar dan refresh halaman.

Menetapkan peran ke grup

Selanjutnya, tentukan peran (izin) apa yang dibutuhkan aplikasi Anda pada sumber daya apa dan tetapkan peran tersebut ke grup Microsoft Entra yang Anda buat. Grup dapat diberi peranan di ruang lingkup 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 Microsoft Azure, buka halaman Gambaran Umum 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 grup Microsoft Entra yang Anda buat sebelumnya dan pilih dari hasil yang difilter. Pilih Pilih untuk memilih grup dan menutup panel flyout.
    • Pilih Tinjau + tetapkan di bawah tab Anggota.

    Cuplikan layar memperlihatkan cara menetapkan peran ke grup Microsoft Entra.

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

Mengatur variabel lingkungan aplikasi

Pada runtime, kredensial tertentu dari pustaka Azure Identity, seperti DefaultAzureCredential, EnvironmentCredential, dan ClientSecretCredential, mencari informasi perwakilan layanan berdasarkan konvensi dalam variabel lingkungan. Ada beberapa cara untuk mengonfigurasi variabel lingkungan saat bekerja dengan JavaScript, 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 dari Microsoft Entra.
  • AZURE_CLIENT_SECRET: Kredensial rahasia yang dihasilkan untuk aplikasi.

Di Visual Studio Code, variabel lingkungan dapat diatur dalam file launch.json proyek Anda. Nilai-nilai ini ditarik secara otomatis saat aplikasi dimulai. Namun, konfigurasi ini tidak bepergian dengan aplikasi Anda selama penyebaran, jadi Anda perlu menyiapkan variabel lingkungan pada lingkungan hosting target Anda.

"configurations": [
{
    "env": {
        "NODE_ENV": "development",
        "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 Azure Identity menyediakan berbagai kredensial—implementasi TokenCredential yang disesuaikan untuk mendukung skenario yang berbeda dan alur autentikasi Microsoft Entra. Langkah-langkah di depan menunjukkan cara menggunakan DefaultAzureCredential saat bekerja dengan akun pengguna secara lokal.

Menerapkan kode

DefaultAzureCredential adalah mekanisme autentikasi berurutan dan berbasis preferensi yang digunakan untuk Microsoft Entra ID. Setiap mekanisme autentikasi adalah kelas yang berasal dari kelas TokenCredential dan dikenal sebagai kredensial. Saat runtime, DefaultAzureCredential mencoba mengautentikasi menggunakan kredensial pertama. Jika kredensial tersebut gagal memperoleh token akses, kredensial berikutnya dalam urutan dicoba, dan sebagainya, hingga token akses berhasil diperoleh. Dengan cara ini, aplikasi Anda dapat menggunakan kredensial yang berbeda di lingkungan yang berbeda tanpa menulis kode khusus lingkungan.

Untuk menggunakan DefaultAzureCredential, tambahkan paket @azure/identitas ke aplikasi Anda. Di terminal pilihan Anda, navigasikan ke direktori proyek aplikasi dan jalankan perintah berikut:

npm install @azure/identity

Layanan Azure diakses menggunakan kelas klien khusus dari berbagai pustaka klien Azure SDK. Kelas ini dan layanan kustom Anda sendiri harus didaftarkan sehingga dapat diakses di seluruh aplikasi Anda. Selesaikan langkah-langkah terprogram berikut untuk membuat kelas klien dan DefaultAzureCredential:

  1. Mengimpor paket @azure/identity.
  2. Buat klien layanan Azure dan berikan instans baru dari DefaultAzureCredential kepada klien tersebut.
import { DefaultAzureCredential } from "@azure/identity";
import { SomeAzureServiceClient } from "@azure/arm-some-service";

const client = new SomeAzureServiceClient(new DefaultAzureCredential());