Mengautentikasi aplikasi JavaScript ke layanan Azure selama pengembangan lokal menggunakan perwakilan layanan

Saat Anda membuat aplikasi cloud, pengembang perlu men-debug dan menguji aplikasi di stasiun kerja lokal mereka. Saat aplikasi dijalankan di stasiun kerja pengembang selama pengembangan lokal, aplikasi masih harus mengautentikasi ke setiap layanan Azure yang digunakan oleh aplikasi. Artikel ini membahas cara menyiapkan objek perwakilan layanan aplikasi khusus yang akan digunakan selama pengembangan lokal.

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.

Perwakilan layanan aplikasi khusus untuk pengembangan lokal memungkinkan Anda untuk mengikuti prinsip hak istimewa paling sedikit selama pengembangan aplikasi. Karena izin dilingkup ke apa saja yang diperlukan untuk aplikasi selama pengembangan, kode aplikasi dicegah untuk mengakses sumber daya Azure secara tidak sengaja yang dimaksudkan untuk digunakan oleh aplikasi yang berbeda. Metode ini juga mencegah bug terjadi ketika aplikasi dipindahkan ke produksi karena aplikasi memiliki hak istimewa yang berlebihan di lingkungan dev.

Perwakilan layanan aplikasi disiapkan untuk aplikasi saat aplikasi terdaftar di Azure. Saat mendaftarkan aplikasi untuk pengembangan lokal, disarankan untuk:

  • Membuat pendaftaran aplikasi terpisah untuk setiap pengembang yang bekerja di aplikasi. Metode ini membuat perwakilan layanan aplikasi terpisah untuk digunakan setiap pengembang selama pengembangan lokal dan menghindari kebutuhan pengembang untuk berbagi kredensial untuk satu perwakilan layanan aplikasi.
  • Membuat pendaftaran aplikasi terpisah per aplikasi. Hal ini mencakup izin aplikasi hanya untuk apa yang diperlukan oleh aplikasi.

Selama pengembangan lokal, variabel lingkungan diatur dengan identitas perwakilan layanan aplikasi. Azure SDK untuk JavaScript membaca variabel lingkungan ini dan menggunakan informasi ini untuk mengautentikasi aplikasi ke sumber daya Azure yang dibutuhkan.

1 - Mendaftarkan aplikasi di Azure

Objek perwakilan layanan aplikasi dibuat dengan pendaftaran aplikasi di Azure. Anda dapat membuat perwakilan layanan menggunakan portal Azure atau Azure CLI.

Masuk ke portal Azure dan ikuti langkah-langkah berikut.

Petunjuk Cuplikan layar
Di portal Azure:
  1. Masukkan pendaftaran aplikasi di bilah pencarian di bagian atas portal Azure.
  2. Pilih item berlabel Pendaftaran aplikasi pada judul Layanan pada menu yang muncul di bawah bilah pencarian.
Cuplikan layar memperlihatkan cara menggunakan bilah pencarian atas di portal Azure untuk menemukan dan menavigasi ke halaman Pendaftaran aplikasi.
Pada halaman Pendaftaran aplikasi, pilih + Pendaftaran baru. Cuplikan layar memperlihatkan lokasi tombol Pendaftaran baru di halaman Pendaftaran aplikasi.
Pada halaman Daftarkan aplikasi, isi formulir sebagai berikut.
  1. Nama → Masukkan nama untuk pendaftaran aplikasi di Azure. Disarankan nama ini termasuk nama aplikasi, pengguna untuk pendaftaran aplikasi, dan pengidentifikasi seperti 'pengembangan' untuk menunjukkan pendaftaran aplikasi ini untuk digunakan dalam pengembangan lokal.
  2. Jenis akun yang didukungHanya akun dalam direktori organisasi ini.
Pilih Daftar untuk mendaftarkan aplikasi Anda dan membuat perwakilan layanan aplikasi.
Cuplikan layar memperlihatkan cara mengisi halaman Daftarkan aplikasi dengan memberi aplikasi nama dan menentukan jenis akun yang didukung sebagai akun di direktori organisasi ini saja.
Pada halaman Pendaftaran aplikasi untuk aplikasi Anda:
  1. ID Aplikasi (klien) → Ini adalah ID aplikasi yang akan digunakan aplikasi untuk mengakses Azure selama pengembangan lokal. Salin nilai ini ke lokasi sementara di editor teks karena Anda akan membutuhkannya di langkah mendatang.
  2. Id direktori (penyewa) → Nilai ini juga akan diperlukan oleh aplikasi Anda saat mengautentikasi ke Azure. Salin nilai ini ke lokasi sementara di editor teks. Nilai ini juga akan dibutuhkan di langkah mendatang.
  3. Mandat klien → Anda harus mengatur mandat klien untuk aplikasi sebelum aplikasi Anda dapat mengautentikasi ke Azure dan menggunakan layanan Azure. Pilih Tambahkan sertifikat atau rahasia untuk menambahkan mandat untuk aplikasi Anda.
Cuplikan layar setelah pendaftaran aplikasi selesai dengan lokasi ID aplikasi, ID penyewa.
Pada halaman Sertifikat & rahasia, pilih + Rahasia klien baru. Cuplikan layar memperlihatkan lokasi tautan yang akan digunakan untuk membuat rahasia klien baru di halaman sertifikat dan rahasia.
Dialog Tambahkan rahasia klien akan muncul dari sisi kanan halaman. Dalam dialog ini:
  1. Deskripsi → Masukkan nilai Saat Ini.
  2. Kedaluwarsa → Pilih nilai 24 bulan.
Pilih Buat untuk menambahkan rahasia.
Cuplikan layar yang menunjukkan halaman tempat rahasia klien baru ditambahkan untuk perwakilan layanan aplikasi yang dibuat oleh proses pendaftaran aplikasi.
Pada halaman Sertifikat & rahasia , Anda akan ditampilkan nilai rahasia klien.

Salin nilai ini ke lokasi sementara di editor teks karena Anda akan membutuhkannya di langkah mendatang.

PENTING: Ini adalah satu-satunya waktu Anda akan melihat nilai ini. Setelah Keluar atau menyegarkan halaman ini, Anda tidak akan dapat melihat nilai ini lagi. Anda dapat menambahkan lebih banyak rahasia klien tanpa membatalkan rahasia klien ini, tetapi Anda tidak akan melihat nilai ini lagi.
Cuplikan layar memperlihatkan halaman dengan rahasia klien yang dihasilkan.

2 - Membuat grup keamanan Microsoft Entra untuk pengembangan lokal

Karena biasanya ada beberapa pengembang yang mengerjakan aplikasi, disarankan untuk membuat grup Microsoft Entra untuk merangkum peran (izin) yang dibutuhkan aplikasi dalam pengembangan lokal daripada menetapkan peran ke objek perwakilan layanan individual. Ini menawarkan keuntungan berikut.

  • Setiap pengembang diyakinkan untuk memiliki peran yang sama yang ditetapkan karena peran ditetapkan di tingkat grup.
  • Jika peran baru diperlukan untuk aplikasi, peran tersebut hanya perlu ditambahkan ke grup Microsoft Entra untuk aplikasi tersebut.
  • Jika pengembang baru bergabung dengan tim, perwakilan layanan aplikasi baru dibuat untuk pengembang dan ditambahkan ke grup, memastikan pengembang memiliki izin yang tepat untuk bekerja di aplikasi.
Petunjuk Cuplikan layar
Navigasi ke halaman ID Microsoft Entra di portal Azure dengan mengetik ID Microsoft Entra ke dalam kotak pencarian di bagian atas halaman lalu pilih ID Microsoft Entra dari bawah layanan. Cuplikan layar memperlihatkan cara menggunakan bilah pencarian teratas di portal Azure untuk mencari dan menavigasi ke halaman ID Microsoft Entra.
Pada halaman ID Microsoft Entra, pilih Grup dari menu sebelah kiri. Cuplikan layar memperlihatkan lokasi item menu Grup di menu sebelah kiri halaman Direktori Default MICROSOFT Entra ID.
Pada halaman Semua grup, pilih Grup baru. Cuplikan layar memperlihatkan lokasi tombol Grup Baru di halaman Semua grup.
Pada halaman Grup Baru:
  1. Jenis grupKeaman
  2. Nama grup → Nama untuk grup keamanan, biasanya dibuat dari nama aplikasi. Akan sangat membantu untuk menyertakan string seperti local-dev dalam nama grup untuk menunjukkan tujuan grup.
  3. Deskripsi grup → Deskripsi tujuan grup.
  4. Pilih link Tidak ada anggota yang dipilih di bawah Anggota untuk menambahkan anggota ke grup.
Cuplikan layar yang menunjukkan cara membuat grup Microsoft Entra baru untuk aplikasi.
Pada kotak dialog Tambahkan anggota :
  1. Gunakan kotak pencarian untuk memfilter daftar nama prinsipal dalam daftar.
  2. Pilih perwakilan layanan aplikasi untuk pengembangan lokal untuk aplikasi ini. Saat objek dipilih, objek akan berwarna abu-abu dan berpindah ke daftar Item terpilih di bagian bawah dialog.
  3. Ketika selesai, pilih tombol Pilih.
Cuplikan layar kotak dialog Tambahkan anggota memperlihatkan cara memilih perwakilan layanan aplikasi yang akan disertakan dalam grup.
Pada halaman Grup baru, pilih Buat untuk membuat grup.

Grup akan dibuat dan Anda akan dibawa kembali ke halaman Semua grup. Mungkin perlu waktu hingga 30 detik agar grup muncul dan Anda mungkin perlu me-refresh halaman karena penembolokan di portal Microsoft Azure.
Cuplikan layar halaman Grup Baru memperlihatkan cara menyelesaikan proses dengan memilih tombol Buat.

3 - Menetapkan peran ke aplikasi

Selanjutnya, Anda perlu menentukan peran (izin) apa yang dibutuhkan aplikasi Anda pada sumber daya apa dan menetapkan peran tersebut ke aplikasi Anda. Dalam contoh ini, peran ditetapkan ke grup Microsoft Entra yang dibuat di langkah 2. Peran dapat diberi peran di sumber daya, grup sumber daya, atau cakupan 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.

Petunjuk Cuplikan layar
Temukan grup sumber daya untuk aplikasi Anda dengan mencari nama grup sumber daya menggunakan kotak pencarian di bagian atas portal Microsoft Azure.

Navigasi ke grup sumber daya Anda dengan memilih nama grup sumber daya di bawah judul Grup Sumber Daya dalam kotak dialog.
Cuplikan layar memperlihatkan cara menggunakan kotak pencarian teratas di portal Azure untuk menemukan dan menavigasi ke grup sumber daya yang ingin Anda tetapkan perannya (izin).
Pada halaman untuk grup sumber daya, pilih Kontrol akses (IAM) dari menu sebelah kiri. Cuplikan layar halaman grup sumber daya memperlihatkan lokasi item menu Kontrol akses (IAM).
Pada halaman Kontrol akses (IAM):
  1. Pilih tab Penetapan peran.
  2. Pilih + Tambahkan dari menu atas lalu Tambahkan penetapan peran dari menu drop-down yang dihasilkan.
Cuplikan layar memperlihatkan cara menavigasi ke tab penetapan peran dan lokasi tombol yang digunakan untuk menambahkan penetapan peran ke grup sumber daya.
Halaman Tambahkan penetapan peran mencantumkan semua peran yang dapat ditetapkan untuk grup sumber daya.
  1. Gunakan kotak pencarian untuk memfilter daftar ke ukuran yang lebih mudah dikelola. Contoh ini menunjukkan cara memfilter peran Blob Penyimpanan.
  2. Pilih peran yang ingin ditetapkan.
    Pilih Berikutnya untuk masuk ke layar berikutnya.
Cuplikan layar memperlihatkan cara memfilter dan memilih penetapan peran yang akan ditambahkan ke grup sumber daya.
Halaman Tambahkan penetapan peran berikutnya memungkinkan Anda menentukan pengguna yang akan ditetapkan perannya.
  1. Pilih Pengguna, grup, atau perwakilan layanan di bawah Tetapkan akses ke.
  2. Pilih + Pilih anggota di bawah Anggota
Kotak dialog terbuka di sisi kanan portal Azure.
Cuplikan layar memperlihatkan tombol radio untuk memilih untuk menetapkan peran ke grup Microsoft Entra dan tautan yang digunakan untuk memilih grup yang akan ditetapkan perannya.
Dalam dialog Pilih anggota:
  1. Kotak teks Pilih dapat digunakan untuk memfilter daftar pengguna dan grup di langganan Anda. Jika diperlukan, ketik beberapa karakter pertama dari grup Microsoft Entra pengembangan lokal yang Anda buat untuk aplikasi.
  2. Pilih grup Microsoft Entra pengembangan lokal yang terkait dengan aplikasi Anda.
Pilih Pilih di bagian bawah dialog untuk melanjutkan.
Cuplikan layar memperlihatkan cara memfilter dan memilih grup Microsoft Entra untuk aplikasi dalam kotak dialog Pilih anggota.
Grup Microsoft Entra ditampilkan seperti yang dipilih pada layar Tambahkan penetapan peran.

Pilih Tinjau + tetapkan untuk masuk ke halaman akhir lalu Tinjau + tetapkan lagi untuk menyelesaikan proses.
Cuplikan layar memperlihatkan halaman Tambahkan penetapan peran yang telah selesai dan lokasi tombol Tinjau + tetapkan yang digunakan untuk menyelesaikan proses.

4 - Mengatur variabel lingkungan pengembangan lokal

Objek DefaultAzureCredential mencari informasi perwakilan layanan dalam sekumpulan variabel lingkungan saat runtime. Karena sebagian besar pengembang bekerja pada beberapa aplikasi, disarankan untuk menggunakan paket seperti dotenv untuk mengakses lingkungan dari file yang .env disimpan di direktori aplikasi selama pengembangan. Ini mencakup variabel lingkungan yang digunakan untuk mengautentikasi aplikasi ke Azure sehingga hanya dapat digunakan oleh aplikasi ini.

File .env tidak pernah diperiksa ke kontrol sumber karena berisi kunci rahasia aplikasi untuk Azure. File .gitignore standar untuk JavaScript secara otomatis mengecualikan .env file dari check-in.

Untuk menggunakan paket, pertama-tama dotenv instal paket di aplikasi Anda.

npm install dotenv

Kemudian, buat .env file di direktori akar aplikasi Anda. Atur nilai variabel lingkungan dengan nilai yang diperoleh dari proses pendaftaran aplikasi sebagai berikut:

  • AZURE_CLIENT_ID → Nilai ID aplikasi.
  • AZURE_TENANT_ID → Nilai ID penyewa.
  • AZURE_CLIENT_SECRET → Kata sandi/mandat yang dihasilkan untuk aplikasi.
AZURE_CLIENT_ID=00000000-0000-0000-0000-000000000000
AZURE_TENANT_ID=11111111-1111-1111-1111-111111111111
AZURE_CLIENT_SECRET=abcdefghijklmnopqrstuvwxyz

Terakhir, dalam kode startup untuk aplikasi Anda, gunakan dotenv pustaka untuk membaca variabel lingkungan dari file saat .env startup.

import 'dotenv/config'

5 - Menerapkan DefaultAzureCredential di aplikasi Anda

Untuk mengautentikasi objek klien Azure SDK ke Azure, aplikasi Anda harus menggunakan DefaultAzureCredential kelas dari @azure/identity paket. Dalam skenario ini, DefaultAzureCredential mendeteksi variabel AZURE_CLIENT_IDlingkungan , , AZURE_TENANT_IDdan AZURE_CLIENT_SECRET diatur dan membaca variabel tersebut untuk mendapatkan informasi utama layanan aplikasi untuk terhubung ke Azure.

Mulailah dengan menambahkan paket @azure/identitas ke aplikasi Anda.

npm install @azure/identity

Selanjutnya, untuk kode JavaScript apa pun yang membuat objek klien Azure SDK di aplikasi, Anda harus:

  1. DefaultAzureCredential Impor kelas dari @azure/identity modul.
  2. Buat objek DefaultAzureCredential.
  3. Teruskan DefaultAzureCredential objek ke konstruktor objek klien Azure SDK.

Contoh ini ditampilkan di segmen kode berikut.

// Azure authentication dependency
import { DefaultAzureCredential } from '@azure/identity';

// Azure resource management dependency
import { SubscriptionClient } from "@azure/arm-subscriptions";

// Acquire credential
const tokenCredential = new DefaultAzureCredential();

async function listSubscriptions() {
  try {

    // use credential to authenticate with Azure SDKs
    const client = new SubscriptionClient(tokenCredential);

    // get details of each subscription
    for await (const item of client.subscriptions.list()) {
      const subscriptionDetails = await client.subscriptions.get(
        item.subscriptionId
      );
      /* 
        Each item looks like:
      
        {
          id: '/subscriptions/123456',
          subscriptionId: '123456',
          displayName: 'YOUR-SUBSCRIPTION-NAME',
          state: 'Enabled',
          subscriptionPolicies: {
            locationPlacementId: 'Internal_2014-09-01',
            quotaId: 'Internal_2014-09-01',
            spendingLimit: 'Off'
          },
          authorizationSource: 'RoleBased'
        },
    */
      console.log(subscriptionDetails);
    }
  } catch (err) {
    console.error(JSON.stringify(err));
  }
}

listSubscriptions()
  .then(() => {
    console.log("done");
  })
  .catch((ex) => {
    console.log(ex);
  });

DefaultAzureCredential akan secara otomatis mendeteksi mekanisme autentikasi yang dikonfigurasi untuk aplikasi dan mendapatkan token yang diperlukan untuk mengautentikasi aplikasi ke Azure. Jika aplikasi menggunakan lebih dari satu klien SDK, objek kredensial yang sama dapat digunakan dengan setiap objek klien SDK.