Bagikan melalui


Rantai kredensial di pustaka klien Azure Identity untuk JavaScript

Pustaka klien Azure Identity menyediakan kredensial yang merupakan kelas publik yang mengimplementasikan antarmuka TokenCredential pustaka Azure Core . Kredensial mewakili alur autentikasi yang berbeda untuk memperoleh token akses dari ID Microsoft Entra. Kredensial ini dapat dipilih secara individual atau dirangkaikan bersama untuk membentuk urutan mekanisme autentikasi secara berurutan untuk dilakukan.

  • 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:

Diagram memperlihatkan alur urutan kredensial Azure Identity.

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:

Diagram yang memperlihatkan alur autentikasi DefaultAzureCredential.

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 memperlihatkan rantai kredensial Azure Identity untuk identitas terkelola dan Azure CLI.

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.

Sumber daya lainnya

  • Azure CLI