Rantai kredensial di pustaka klien Azure Identity untuk JavaScript
Pustaka klien Azure Identity menyediakan kredensial
- Kredensial individu memberikan kecepatan dan kepastian. Jika gagal, Anda tahu kredensial tidak diautentikasi.
- Chains memberikan alternatif. Ketika kredensial gagal diautentikasi, kredensial berikutnya dalam rantai dicoba.
Mendesain alur autentikasi Anda
Saat Anda menggunakan pustaka klien Azure SDK, langkah pertama adalah mengautentikasi ke Azure. Ada banyak opsi cara mengautentikasi untuk dipertimbangkan, seperti alat dan IDE yang digunakan dalam tim pengembangan, alur kerja otomatisasi seperti pengujian dan CI/CD, dan platform hosting seperti Azure App Service.
Pilih dari urutan umum berikut dalam alur autentikasi Anda:
Gunakan
DefaultAzureCredential
untuk tim yang pengembangnya menggunakan berbagai IDE dan CLI untuk mengautentikasi ke Azure. Ini memungkinkan fleksibilitas terbesar. Fleksibilitas ini disediakan dengan mengorbankan kinerja untuk memvalidasi kredensial dalam rantai hingga salah satu berhasil.- Perubahan otomatis dari bukti identitas ke bukti identitas dipilih atas nama Anda berdasarkan lingkungan sistem yang terdeteksi.
- Untuk menentukan kredensial mana yang dipilih, aktifkan debugging.
Gunakan
ChainedTokenCredential
untuk tim yang memiliki pemilihan alat yang ketat dan terbatas. Misalnya, mereka semua mengautentikasi masuk dan menggunakan IDE atau CLI yang sama. Ini memungkinkan tim untuk memilih kredensial yang tepat dan urutan yang masih memberikan fleksibilitas tetapi dengan biaya performa yang berkurang.- Anda memilih jalur cadangan dari kredensial ke kredensial terlepas dari lingkungan tempatnya dijalankan.
- Untuk menentukan kredensial mana yang dipilih, aktifkan debugging.
Untuk tim dengan kepastian kredensial di semua lingkungan, pernyataan alur kontrol seperti if/else, memungkinkan Anda mengetahui kredensial mana yang dipilih di setiap lingkungan.
- Tidak ada alternatif ke jenis kredensial lain.
- Anda tidak perlu men-debug untuk menentukan kredensial mana yang dipilih karena telah ditentukan.
Cara kerja kredensial berantai
Selama runtime, rantai kredensial mencoba mengautentikasi menggunakan kredensial pertama dalam urutan. Jika kredensial tersebut gagal memperoleh token akses, kredensial berikutnya dalam urutan dicoba, dan sebagainya, hingga token akses berhasil diperoleh. Diagram urutan berikut mengilustrasikan perilaku ini:
Gunakan DefaultAzureCredential untuk fleksibilitas
DefaultAzureCredential adalah rantai kredensial yang disarankan dan telah dikonfigurasi sebelumnya. Ini dirancang untuk mendukung banyak lingkungan, bersama dengan alur autentikasi dan alat pengembang yang paling umum. Dalam bentuk grafis, rantai yang mendasar terlihat seperti ini:
Urutan di mana DefaultAzureCredential
mencoba kredensial adalah sebagai berikut.
Pesanan | Credential | Deskripsi |
---|---|---|
1 | Lingkungan | Membaca kumpulan variabel lingkungan untuk menentukan apakah perwakilan layanan aplikasi (pengguna aplikasi) dikonfigurasi untuk aplikasi. Jika demikian, DefaultAzureCredential menggunakan nilai-nilai ini untuk mengautentikasi aplikasi ke Azure. Metode ini paling sering digunakan di lingkungan server tetapi juga dapat digunakan saat mengembangkan secara lokal. |
2 | Identitas Beban Kerja | Jika aplikasi disebarkan ke host Azure dengan Identitas Beban Kerja diaktifkan, autentikasi akun tersebut. |
3 | Identitas Terkelola | Jika aplikasi disebarkan ke host Azure dengan Identitas Terkelola diaktifkan, autentikasi aplikasi ke Azure menggunakan Identitas Terkelola tersebut. |
4 | Azure CLI | Jika pengembang diautentikasi ke Azure menggunakan perintah az login Azure CLI, autentikasi aplikasi ke Azure menggunakan akun yang sama. |
5 | Azure PowerShell | Jika pengembang mengautentikasi ke Azure menggunakan cmdlet Connect-AzAccount Azure PowerShell, autentikasi aplikasi ke Azure menggunakan akun yang sama. |
6 | Azure Developer CLI | Jika pengembang mengautentikasi ke Azure menggunakan perintah azd auth login Azure Developer CLI, autentikasi dengan akun tersebut. |
Dalam bentuk yang paling sederhana, Anda dapat menggunakan versi DefaultAzureCredential
tanpa parameter sebagai berikut:
import { DefaultAzureCredential } from "@azure/identity";
import { BlobServiceClient } from "@azure/storage-blob";
// Acquire a credential object
const credential = new DefaultAzureCredential();
const blobServiceClient = new BlobServiceClient(
"https://<my_account_name>.blob.core.windows.net",
credential
);
Kredensial bersifat global untuk lingkungan
DefaultAzureCredential
memeriksa keberadaan variabel lingkungan tertentu. Ada kemungkinan bahwa seseorang dapat menambahkan atau memodifikasi variabel lingkungan ini di tingkat sistem pada komputer host. Perubahan tersebut berlaku secara global dan oleh karena itu mengubah perilaku DefaultAzureCredential
pada runtime di aplikasi apa pun yang berjalan di komputer tersebut.
Gunakan ChainedTokenCredential untuk granularitas
ChainedTokenCredential adalah rantai kosong yang Anda tambahkan kredensialnya agar sesuai dengan kebutuhan aplikasi Anda. Misalnya, contoh berikut menambahkan instans ManagedIdentityCredential
, lalu instans AzureCliCredential
.
import {
ChainedTokenCredential,
ManagedIdentityCredential,
AzureCliCredential
} from "@azure/identity";
const credential = new ChainedTokenCredential(
new ManagedIdentityCredential({ clientId: "<YOUR_CLIENT_ID>" }),
new AzureCliCredential()
);
Sampel kode sebelumnya membuat rantai kredensial yang disesuaikan yang terdiri dari dua kredensial. Varian identitas terkelola yang ditetapkan pengguna dari ManagedIdentityCredential
dicoba terlebih dahulu, diikuti oleh AzureCliCredential
, jika perlu. Dalam bentuk grafis, rantai terlihat seperti ini:
diagram
Tips
Untuk peningkatan performa, optimalkan pemesanan kredensial untuk lingkungan produksi Anda. Kredensial yang ditujukan untuk digunakan di lingkungan pengembangan lokal harus ditambahkan terakhir.
Memecahkan masalah kredensial terhubung
Untuk men-debug rantai kredensial, aktifkan pengelogan Azure SDK.