Bagikan melalui


Cara mengautentikasi aplikasi JavaScript ke layanan Azure menggunakan pustaka Azure Identity

Saat aplikasi perlu mengakses sumber daya Azure, seperti Storage, Key Vault, atau Cognitive Services, aplikasi harus diautentikasi ke Azure. Ini berlaku untuk semua aplikasi, baik yang disebarkan ke Azure, disebarkan secara lokal, atau sedang dalam pengembangan di stasiun kerja pengembang lokal. Artikel ini menjelaskan pendekatan yang direkomendasikan untuk mengautentikasi aplikasi ke Azure saat menggunakan Azure SDK untuk JavaScript.

Pendekatan yang disarankan adalah meminta aplikasi Anda menggunakan autentikasi berbasis token , bukan string koneksi atau kunci, saat mengautentikasi ke sumber daya Azure. Pustaka Azure Identity menyediakan autentikasi berbasis token dan memungkinkan aplikasi mengautentikasi ke sumber daya Azure dengan lancar baik aplikasi dalam pengembangan lokal, disebarkan ke Azure, atau disebarkan ke server lokal.

Jenis autentikasi berbasis token tertentu yang harus digunakan aplikasi untuk mengautentikasi ke sumber daya Azure bergantung pada tempat aplikasi berjalan dan ditampilkan dalam diagram berikut.

Lingkungan Otentikasi
Lokal Saat pengembang menjalankan aplikasi selama pengembangan lokal - Aplikasi dapat mengautentikasi ke Azure menggunakan perwakilan layanan aplikasi untuk pengembangan lokal atau dengan menggunakan kredensial Azure pengembang. Masing-masing opsi ini dibahas secara lebih rinci di bagian autentikasi selama pengembangan lokal.
Azure Saat aplikasi dihosting di Azure - Aplikasi harus mengautentikasi ke sumber daya Azure menggunakan identitas terkelola. Opsi ini dibahas secara lebih rinci di bawah ini di bagian autentikasi di lingkungan server.
Lokal Saat aplikasi dihosting dan disebarkan secara lokal - Aplikasi harus mengautentikasi ke sumber daya Azure menggunakan perwakilan layanan aplikasi. Opsi ini dibahas secara lebih rinci di bawah ini di bagian autentikasi di lingkungan server.

Diagram yang menunjukkan strategi autentikasi berbasis token yang direkomendasikan untuk aplikasi tergantung tempatnya berjalan.

Keuntungan autentikasi berbasis token

Saat membangun aplikasi untuk Azure, autentikasi berbasis token sangat direkomendasikan daripada rahasia (string koneksi atau kunci). Autentikasi berbasis token disediakan dengan DefaultAzureCredential.

Autentikasi berbasis token Rahasia (string koneksi dan kunci)
Prinsip hak istimewa paling sedikit, menetapkan izin khusus yang diperlukan oleh aplikasi pada sumber daya Azure. String koneksi atau kunci memberikan hak penuh ke sumber daya Azure.
Tidak ada informasi rahasia aplikasi yang perlu disimpan. Harus menyimpan dan mengganti rahasia dalam pengaturan aplikasi atau variabel lingkungan.
Pustaka Azure Identity mengelola token untuk Anda di belakang layar. Ini membuat penggunaan autentikasi berbasis token mudah digunakan sebagai string koneksi. Rahasia tidak dikelola.

Penggunaan string koneksi harus terbatas pada bukti awal aplikasi konsep atau prototipe pengembangan yang tidak mengakses produksi atau data sensitif. Jika tidak, kelas autentikasi berbasis token yang tersedia di pustaka Azure Identity harus selalu disukai saat mengautentikasi ke sumber daya Azure.

Gunakan pustaka berikut:

DefaultAzureCredential

Kelas DefaultAzureCredential yang disediakan oleh pustaka Identitas Azure memungkinkan aplikasi menggunakan metode autentikasi yang berbeda tergantung pada lingkungan tempat mereka dijalankan. Perilaku ini memungkinkan aplikasi dipromosikan dari pengembangan lokal ke lingkungan pengujian ke produksi tanpa perubahan kode. Anda mengonfigurasi metode autentikasi yang sesuai untuk setiap lingkungan, dan DefaultAzureCredential akan secara otomatis mendeteksi dan menggunakan metode autentikasi tersebut. Penggunaan DefaultAzureCredential harus lebih disukai daripada logika kondisional pengkodean manual atau bendera fitur untuk menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda.

Detail tentang menggunakan DefaultAzureCredential tercakup dalam Gunakan DefaultAzureCredential dalam aplikasi.

Autentikasi di lingkungan server

Saat menghosting di lingkungan server, setiap aplikasi harus diberi identitas aplikasi unik per lingkungan. Di Azure, identitas aplikasi diwakili olehperwakilan layanan , jenis khusus prinsip keamanan yang dimaksudkan untuk mengidentifikasi dan mengautentikasi aplikasi ke Azure. Jenis perwakilan layanan yang akan digunakan untuk aplikasi Anda bergantung pada tempat aplikasi Anda berjalan.

Autentikasi selama pengembangan lokal

Saat aplikasi dijalankan di stasiun kerja pengembang selama pengembangan lokal, lingkungan lokal harus tetap mengautentikasi ke layanan Azure apa pun yang digunakan oleh aplikasi.

Menggunakan DefaultAzureCredential dalam aplikasi

DefaultAzureCredential adalah urutan mekanisme yang terstruktur dan teratur untuk mengautentikasi ke 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/identity ke aplikasi Anda.

npm install @azure/identity

Kemudian, sampel kode berikut menunjukkan cara membuat instans objek DefaultAzureCredential dan menggunakannya dengan kelas klien layanan Azure SDK—dalam hal ini, BlobServiceClient digunakan untuk mengakses Azure Blob Storage.

import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config';

const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  new DefaultAzureCredential()
);

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.