Bagikan melalui


Pustaka klien Azure Identity untuk JavaScript - versi 4.4.0

Pustaka Azure Identity menyediakan ID Microsoft Entra (sebelumnyaautentikasi token Azure Active Directory) melalui serangkaian implementasi TokenCredential yang nyaman.

Untuk contoh berbagai kredensial, lihat halaman contoh Azure Identity.

Tautan kunci:

Persiapan

Lingkungan yang saat ini didukung

  • versi LTS Node.js
    • Catatan: Jika aplikasi Anda berjalan pada Node.js v8 atau lebih rendah dan Anda tidak dapat meningkatkan versi Node.js ke versi stabil terbaru, maka sematkan dependensi @azure/identity Anda ke versi 1.1.0.
  • Versi terbaru Safari, Chrome, Edge, dan Firefox.
    • Catatan: Di antara berbagai kredensial yang diekspor di pustaka ini, InteractiveBrowserCredential adalah satu-satunya yang didukung di browser.

Lihat kebijakan dukungan kami untuk detail selengkapnya.

Menginstal paket

Instal Azure Identity dengan npm:

npm install --save @azure/identity

Prasyarat

  • Langganan Azure .
  • Opsional: Azure CLI dan/atau Azure PowerShell juga dapat berguna untuk mengautentikasi di lingkungan pengembangan dan mengelola peran akun.

Kapan menggunakan @azure/identity

Kelas info masuk yang diekspos oleh @azure/identity berfokus pada penyediaan cara paling mudah untuk mengautentikasi klien Azure SDK secara lokal, di lingkungan pengembangan Anda, dan dalam produksi. Kami bertujuan untuk kesederhanaan dan dukungan yang wajar dari protokol autentikasi untuk mencakup sebagian besar skenario autentikasi yang mungkin di Azure. Kami secara aktif memperluas untuk mencakup lebih banyak skenario. Untuk daftar lengkap kredensial yang ditawarkan, lihat bagian Kelas Kredensial .

Semua jenis kredensial yang disediakan oleh @azure/identity didukung di Node.js. Untuk browser, InteractiveBrowserCredential adalah jenis kredensial yang akan digunakan untuk skenario autentikasi dasar.

Sebagian besar jenis kredensial yang ditawarkan oleh @azure/identity menggunakan Microsoft Authentication Library for JavaScript (MSAL.js). Secara khusus, kami menggunakan pustaka MSAL.js v2, yang menggunakan Alur Kode Otorisasi OAuth 2.0 dengan PKCE dan yang mematuhi OpenID . Meskipun berfokus pada kesederhanaan, pustaka MSAL.js, seperti@azure/msal-common, @azure/msal-node, dan @azure/msal-browser, dirancang untuk memberikan dukungan yang kuat untuk protokol autentikasi yang didukung Azure.

Kapan menggunakan sesuatu yang lain

Jenis kredensial adalah implementasi kelas @azure/core-auth. Pada prinsipnya, objek apa pun dengan metode getToken yang memenuhi getToken(scopes: string | string[], options?: GetTokenOptions): Promise<AccessToken | null> akan berfungsi sebagai TokenCredential. Ini berarti pengembang dapat menulis jenis kredensial mereka sendiri untuk mendukung kasus autentikasi yang tidak dicakup oleh @azure/identity. Untuk mempelajari selengkapnya, lihat Kredensial Kustom.

Meskipun jenis kredensial kami mendukung banyak kasus lanjutan, pengembang mungkin menginginkan kontrol penuh terhadap protokol autentikasi. Untuk kasus penggunaan tersebut, sebaiknya gunakan Microsoft Authentication Library for JavaScript (MSAL.js) secara langsung. Anda dapat membaca selengkapnya melalui tautan berikut:

  • Kami menggambarkan beberapa kasus penggunaan lanjutan di halaman Contoh Identitas Azure .

Untuk alur kerja autentikasi tingkat lanjut di browser, kami memiliki bagian di mana kami menampilkan cara menggunakan pustaka browser @azure/msal secara langsung untuk mengautentikasi klien Azure SDK.

Mengautentikasi klien di lingkungan pengembangan

Meskipun sebaiknya gunakan identitas terkelola di aplikasi yang dihosting Azure Anda, biasanya pengembang menggunakan akun mereka sendiri untuk mengautentikasi panggilan ke layanan Azure saat men-debug dan mengeksekusi kode secara lokal. Ada beberapa alat pengembang yang dapat digunakan untuk melakukan autentikasi ini di lingkungan pengembangan Anda.

Mengautentikasi melalui Azure Developer CLI

Pengkodian pengembang di luar IDE juga dapat menggunakan CLI Pengembang Azure untuk mengautentikasi. Aplikasi yang menggunakan DefaultAzureCredential atau AzureDeveloperCliCredential kemudian dapat menggunakan akun ini untuk mengautentikasi panggilan dalam aplikasi mereka saat berjalan secara lokal.

Untuk mengautentikasi denganCLI Pengembang Azure , pengguna dapat menjalankan perintah . Untuk pengguna yang berjalan pada sistem dengan browser web default, Azure Developer CLI akan meluncurkan browser untuk mengautentikasi pengguna.

Untuk sistem tanpa browser web default, perintah azd auth login --use-device-code akan menggunakan alur autentikasi kode perangkat.

Mengautentikasi melalui Azure CLI

Aplikasi yang menggunakan AzureCliCredential, baik secara langsung atau melalui DefaultAzureCredential, dapat menggunakan akun Azure CLI untuk mengautentikasi panggilan dalam aplikasi saat berjalan secara lokal.

Untuk mengautentikasi dengan Azure CLI pengguna dapat menjalankan perintah az login. Untuk pengguna yang berjalan pada sistem dengan browser web default, Azure cli akan meluncurkan browser untuk mengautentikasi pengguna.

Masuk Akun Azure CLI

Untuk sistem tanpa browser web default, perintah az login akan menggunakan alur autentikasi kode perangkat. Pengguna juga dapat memaksa Azure CLI untuk menggunakan alur kode perangkat daripada meluncurkan browser dengan menentukan argumen --use-device-code.

Masuk Kode Perangkat Akun Azure CLI

Mengautentikasi melalui Azure PowerShell

Aplikasi yang menggunakan AzurePowerShellCredential, baik secara langsung atau melalui DefaultAzureCredential, dapat menggunakan akun yang terhubung ke Azure PowerShell untuk mengautentikasi panggilan dalam aplikasi saat berjalan secara lokal.

Untuk mengautentikasi dengan Azure PowerShell pengguna dapat menjalankan cmdlet Connect-AzAccount. Secara default, seperti Azure CLI, Connect-AzAccount akan meluncurkan browser web default untuk mengautentikasi akun pengguna.

Masuk Akun Azure PowerShell

Jika autentikasi interaktif tidak dapat didukung dalam sesi, maka argumen -UseDeviceAuthentication akan memaksa cmdlet untuk menggunakan alur autentikasi kode perangkat sebagai gantinya, mirip dengan opsi yang sesuai dalam kredensial Azure CLI.

Mengautentikasi melalui Visual Studio Code

Pengembang yang menggunakan Visual Studio Code dapat menggunakan ekstensi Akun Azure untuk mengautentikasi melalui editor. Aplikasi yang menggunakan VisualStudioCodeCredential kemudian dapat menggunakan akun ini untuk mengautentikasi panggilan di aplikasi mereka saat berjalan secara lokal.

Untuk mengautentikasi di Visual Studio Code, pastikan ekstensi Akun Azure diinstal. Setelah diinstal, buka Palet Perintah dan jalankan perintah Azure: Masuk.

Selain itu, gunakan paket plugin @azure/identity-vscode. Paket ini menyediakan dependensi VisualStudioCodeCredential dan mengaktifkannya. Lihat plugin .

Ini adalah masalah diketahui bahwa VisualStudioCodeCredential tidak berfungsi dengan ekstensi Akun Azure versi yang lebih baru dari 0.9.11. Perbaikan jangka panjang untuk masalah ini sedang berlangsung. Sementara itu, pertimbangkan untuk mengautentikasi melalui Azure CLI.

Mengautentikasi klien di browser

Untuk mengautentikasi klien Azure SDK dalam browser web, kami menawarkan InteractiveBrowserCredential, yang dapat diatur untuk menggunakan pengalihan atau popup untuk menyelesaikan alur autentikasi. Anda perlu membuat Pendaftaran Aplikasi Azure di portal Microsoft Azure untuk aplikasi web Anda terlebih dahulu.

Konsep utama

Jika ini pertama kalinya Anda menggunakan @azure/identity atau ID Microsoft Entra, baca Menggunakan @azure/identity dengan ID Microsoft Entra terlebih dahulu. Dokumen ini memberikan pemahaman yang lebih mendalam tentang platform dan cara mengonfigurasi akun Azure Anda dengan benar.

Kredensial

Kredensial adalah kelas yang berisi atau dapat memperoleh data yang diperlukan klien layanan untuk mengautentikasi permintaan. Klien layanan di seluruh Azure SDK menerima kredensial saat dibuat. Klien layanan menggunakan kredensial tersebut untuk mengautentikasi permintaan ke layanan.

Pustaka Azure Identity berfokus pada autentikasi OAuth dengan ID Microsoft Entra, dan menawarkan berbagai kelas kredensial yang mampu memperoleh token Microsoft Entra untuk mengautentikasi permintaan layanan. Semua kelas kredensial di pustaka ini adalah implementasi dari kelas abstrak tokenCredential , dan salah satunya dapat digunakan oleh untuk membangun klien layanan yang mampu mengautentikasi dengan TokenCredential.

LihatKelas Kredensial .

DefaultAzureCredential

DefaultAzureCredential sesuai untuk sebagian besar skenario di mana aplikasi dimaksudkan untuk pada akhirnya dijalankan di Azure. Ini karena DefaultAzureCredential menggabungkan kredensial yang umumnya digunakan untuk mengautentikasi saat disebarkan dengan kredensial yang digunakan untuk mengautentikasi di lingkungan pengembangan.

Catatan: DefaultAzureCredential dimaksudkan untuk menyederhanakan memulai SDK dengan menangani skenario umum dengan perilaku default yang wajar. Pengembang yang menginginkan lebih banyak kontrol atau skenarionya tidak dilayani oleh pengaturan default harus menggunakan jenis kredensial lainnya.

Jika digunakan dari Node.js, DefaultAzureCredential akan mencoba mengautentikasi melalui mekanisme berikut secara berurutan:

alur autentikasi DefaultAzureCredential

  1. Environment - DefaultAzureCredential akan membaca informasi akun yang ditentukan melalui variabel lingkungan dan menggunakannya untuk mengautentikasi.
  2. Identitas Beban Kerja - Jika aplikasi disebarkan ke Azure Kubernetes Service dengan Identitas Terkelola diaktifkan, DefaultAzureCredential akan mengautentikasi dengannya.
  3. Identitas Terkelola - Jika aplikasi disebarkan ke host Azure dengan Identitas Terkelola diaktifkan, DefaultAzureCredential akan mengautentikasi dengan akun tersebut.
  4. azure CLI - Jika pengembang telah mengautentikasi akun melalui perintah azure CLI az login, DefaultAzureCredential akan mengautentikasi dengan akun tersebut.
  5. Azure PowerShell - Jika pengembang telah mengautentikasi menggunakan perintah Connect-AzAccount modul Azure PowerShell, DefaultAzureCredential akan mengautentikasi dengan akun tersebut.
  6. Azure Developer CLI - Jika pengembang telah mengautentikasi akun melalui perintah azd auth login Azure Developer CLI, DefaultAzureCredential akan mengautentikasi dengan akun tersebut.

Kebijakan kelanjutan

Pada versi 3.3.0, DefaultAzureCredential akan mencoba mengautentikasi dengan semua kredensial pengembang hingga berhasil, terlepas dari kesalahan yang dialami kredensial pengembang sebelumnya. Misalnya, kredensial pengembang dapat mencoba mendapatkan token dan gagal, jadi DefaultAzureCredential akan melanjutkan ke kredensial berikutnya dalam alur. Kredensial layanan yang disebarkan akan menghentikan alur dengan pengecualian yang dilemparkan jika mereka dapat mencoba pengambilan token, tetapi tidak menerimanya.

Ini memungkinkan untuk mencoba semua kredensial pengembang di komputer Anda sambil memiliki perilaku yang disebarkan yang dapat diprediksi.

Catatan tentang VisualStudioCodeCredential

Karena masalah diketahui, VisualStudioCodeCredential telah dihapus dari rantai token DefaultAzureCredential. Ketika masalah diselesaikan dalam rilis mendatang, perubahan ini akan dikembalikan.

Plugin

Azure Identity for JavaScript menyediakan API plugin yang memungkinkan kami menyediakan fungsionalitas tertentu melalui paket plugin terpisah. Paket @azure/identity mengekspor fungsi tingkat atas (useIdentityPlugin) yang dapat digunakan untuk mengaktifkan plugin. Kami menyediakan dua paket plugin:

  • @azure/identity-broker, yang menyediakan dukungan autentikasi broker melalui broker asli, seperti Pengelola Akun Web.
  • @azure/identity-cache-persistence, yang menyediakan penembolokan token persisten di Node.js menggunakan sistem penyimpanan aman asli yang disediakan oleh sistem operasi Anda. Plugin ini memungkinkan nilai access_token yang di-cache untuk bertahan di seluruh sesi, yang berarti bahwa alur masuk interaktif tidak perlu diulang selama token yang di-cache tersedia.

Contoh

Anda dapat menemukan lebih banyak contoh penggunaan berbagai kredensial di Halaman Contoh Identitas Azure

Mengautentikasi dengan DefaultAzureCredential

Contoh ini menunjukkan autentikasi KeyClient dari @azure/keyvault-keys pustaka klien menggunakan DefaultAzureCredential.

// The default credential first checks environment variables for configuration as described above.
// If environment configuration is incomplete, it will try managed identity.

// Azure Key Vault service to use
import { KeyClient } from "@azure/keyvault-keys";

// Azure authentication library to access Azure Key Vault
import { DefaultAzureCredential } from "@azure/identity";

// Azure SDK clients accept the credential as a parameter
const credential = new DefaultAzureCredential();

// Create authenticated client
const client = new KeyClient(vaultUrl, credential);

Tentukan identitas terkelola yang ditetapkan pengguna dengan DefaultAzureCredential

Skenario yang relatif umum melibatkan autentikasi menggunakan identitas terkelola yang ditetapkan pengguna untuk sumber daya Azure. Jelajahi contoh tentang Mengautentikasi identitas terkelola yang ditetapkan pengguna dengan DefaultAzureCredential untuk melihat bagaimana hal ini dibuat sebagai tugas yang relatif mudah yang dapat dikonfigurasi menggunakan variabel lingkungan atau dalam kode.

Menentukan alur autentikasi kustom dengan ChainedTokenCredential

Meskipun DefaultAzureCredential umumnya adalah cara tercepat untuk mulai mengembangkan aplikasi untuk Azure, pengguna yang lebih canggih mungkin ingin menyesuaikan kredensial yang dipertimbangkan saat mengautentikasi. ChainedTokenCredential memungkinkan pengguna menggabungkan beberapa instans kredensial untuk menentukan rantai kredensial yang disesuaikan. Contoh ini menunjukkan pembuatan ChainedTokenCredential yang akan mencoba mengautentikasi menggunakan dua instans ClientSecretCredentialyang dikonfigurasi secara berbeda , untuk kemudian mengautentikasi KeyClient dari @azure/keyvault-keys:

import { ClientSecretCredential, ChainedTokenCredential } from "@azure/identity";

// When an access token is requested, the chain will try each
// credential in order, stopping when one provides a token
const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
const secondCredential = new ClientSecretCredential(tenantId, anotherClientId, anotherSecret);
const credentialChain = new ChainedTokenCredential(firstCredential, secondCredential);

// The chain can be used anywhere a credential is required
import { KeyClient } from "@azure/keyvault-keys";
const client = new KeyClient(vaultUrl, credentialChain);

Dukungan identitas terkelola

autentikasi identitas terkelola didukung melalui atau kelas kredensial secara langsung untuk layanan Azure berikut:

Untuk contoh cara menggunakan identitas terkelola untuk autentikasi, lihat contoh.

Konfigurasi cloud

Kredensial default untuk mengautentikasi ke titik akhir Microsoft Entra untuk Azure Public Cloud. Untuk mengakses sumber daya di cloud lain, seperti Azure Government atau cloud privat, konfigurasikan kredensial dengan argumen authorityHost di konstruktor. Antarmuka AzureAuthorityHosts mendefinisikan otoritas untuk cloud terkenal. Untuk cloud Pemerintah AS, Anda dapat membuat instans kredensial dengan cara ini:

import { AzureAuthorityHosts, ClientSecretCredential } from "@azure/identity";
const credential = new ClientSecretCredential(
  "<YOUR_TENANT_ID>",
  "<YOUR_CLIENT_ID>",
  "<YOUR_CLIENT_SECRET>",
  {
    authorityHost: AzureAuthorityHosts.AzureGovernment,
  }
);

Tidak semua kredensial memerlukan konfigurasi ini. Kredensial yang mengautentikasi melalui alat pengembangan, seperti AzureCliCredential, gunakan konfigurasi alat tersebut. Demikian pula, VisualStudioCodeCredential menerima argumen authorityHost tetapi default ke pengaturan authorityHost cocok dengan Azure: Cloud Visual Studio Code yang cocok.

Kelas kredensial

Mengautentikasi aplikasi yang dihosting Azure

Credential Penggunaan Contoh
DefaultAzureCredential Memberikan pengalaman autentikasi yang disederhanakan untuk mulai mengembangkan aplikasi dengan cepat yang dijalankan di Azure. contoh
ChainedTokenCredential Memungkinkan pengguna menentukan alur autentikasi kustom yang menyusun beberapa kredensial. contoh
EnvironmentCredential Mengautentikasi perwakilan layanan atau pengguna melalui informasi kredensial yang ditentukan dalam variabel lingkungan. contoh
ManagedIdentityCredential Mengautentikasi identitas terkelola sumber daya Azure. contoh
WorkloadIdentityCredential Mendukung ID Beban Kerja Microsoft Entra di Kubernetes. contoh

Mengautentikasi perwakilan layanan

Credential Penggunaan Contoh Referensi
AzurePipelinesCredential Mendukung ID Beban Kerja Microsoft Entra di Azure Pipelines. contoh
ClientAssertionCredential Mengautentikasi perwakilan layanan menggunakan pernyataan klien yang ditandatangani. contoh autentikasi perwakilan layanan
ClientCertificateCredential Mengautentikasi perwakilan layanan menggunakan sertifikat. contoh autentikasi perwakilan layanan
ClientSecretCredential Mengautentikasi perwakilan layanan menggunakan rahasia. contoh autentikasi perwakilan layanan

Mengautentikasi pengguna

Credential Penggunaan Contoh Referensi
AuthorizationCodeCredential Mengautentikasi pengguna dengan kode otorisasi yang diperoleh sebelumnya. contoh kode autentikasi OAuth2
DeviceCodeCredential Mengautentikasi pengguna secara interaktif di perangkat dengan UI terbatas. contoh autentikasi kode perangkat
InteractiveBrowserCredential Mengautentikasi pengguna secara interaktif dengan browser sistem default. Baca selengkapnya tentang bagaimana hal ini terjadi di sini. contoh kode autentikasi OAuth2
OnBehalfOfCredential Menyebarluaskan identitas dan izin pengguna yang didelegasikan melalui rantai permintaan atas nama autentikasi
UsernamePasswordCredential Mengautentikasi pengguna dengan nama pengguna dan kata sandi. contoh autentikasi nama pengguna + kata sandi

Mengautentikasi melalui alat pengembangan

Credential Penggunaan Contoh Referensi
AzureCliCredential Autentikasi di lingkungan pengembangan dengan Azure CLI. contoh autentikasi Azure CLI
AzureDeveloperCliCredential Autentikasi di lingkungan pengembangan dengan pengguna atau perwakilan layanan yang diaktifkan di Azure Developer CLI. Referensi CLI Pengembang Azure
AzurePowerShellCredential Mengautentikasi di lingkungan pengembangan menggunakan Azure PowerShell. contoh autentikasi Azure PowerShell
VisualStudioCodeCredential Mengautentikasi saat pengguna masuk ke ekstensi Akun Azure Visual Studio Code. ekstensi Akun Azure Visual Studio Code

Variabel lingkungan

DefaultAzureCredential dan EnvironmentCredential dapat dikonfigurasi dengan variabel lingkungan. Setiap jenis autentikasi memerlukan nilai untuk variabel tertentu.

Perwakilan layanan dengan rahasia

Nama variabel Nilai
AZURE_CLIENT_ID ID aplikasi Microsoft Entra
AZURE_TENANT_ID ID penyewa Microsoft Entra aplikasi
AZURE_CLIENT_SECRET salah satu rahasia klien aplikasi

Perwakilan layanan dengan sertifikat

Nama variabel Nilai
AZURE_CLIENT_ID ID aplikasi Microsoft Entra
AZURE_TENANT_ID ID penyewa Microsoft Entra aplikasi
AZURE_CLIENT_CERTIFICATE_PATH jalur ke file sertifikat yang dikodekan PEM termasuk kunci privat
AZURE_CLIENT_CERTIFICATE_PASSWORD kata sandi file sertifikat, jika ada

Nama pengguna dan kata sandi

Nama variabel Nilai
AZURE_CLIENT_ID ID aplikasi Microsoft Entra
AZURE_TENANT_ID ID penyewa Microsoft Entra aplikasi
AZURE_USERNAME nama pengguna (biasanya alamat email)
AZURE_PASSWORD kata sandi pengguna tersebut

Konfigurasi dicoba dalam urutan di atas. Misalnya, jika nilai untuk rahasia klien dan sertifikat keduanya ada, rahasia klien akan digunakan.

Evaluasi Akses Berkelanjutan

Pada versi 3.3.0, mengakses sumber daya yang dilindungi oleh Evaluasi Akses Berkelanjutan (CAE) dimungkinkan berdasarkan per permintaan. Ini dapat diaktifkan menggunakan API GetTokenOptions.enableCae(boolean). CAE tidak didukung untuk kredensial pengembang.

Penembolokan token

Penembolokan token adalah fitur yang disediakan oleh pustaka Azure Identity yang memungkinkan aplikasi untuk:

  • Token cache dalam memori (default) dan pada disk (keikutsertaan).
  • Meningkatkan ketahanan dan performa.
  • Kurangi jumlah permintaan yang dibuat ke ID Microsoft Entra untuk mendapatkan token akses.

Pustaka Azure Identity menawarkan penembolokan disk dalam memori dan persisten. Untuk detail selengkapnya, lihat dokumentasi penembolokan token .

Autentikasi broker

Broker autentikasi adalah aplikasi yang berjalan pada komputer pengguna dan mengelola jabat tangan autentikasi dan pemeliharaan token untuk akun yang terhubung. Saat ini, hanya Pengelola Akun Web Windows (WAM) yang didukung. Untuk mengaktifkan dukungan, gunakan paket @azure/identity-broker. Untuk detail tentang mengautentikasi menggunakan WAM, lihat dokumentasi plugin broker .

Pemecahan masalah

Untuk bantuan terkait pemecahan masalah, lihat panduan pemecahan masalah .

Langkah berikutnya

Membaca dokumentasi

Dokumentasi API untuk pustaka ini dapat ditemukan di situs dokumentasi kami.

Dukungan pustaka klien

Pustaka klien dan manajemen yang tercantum di halaman rilis Azure SDK yang mendukung autentikasi Microsoft Entra menerima kredensial dari pustaka ini. Pelajari selengkapnya tentang menggunakan pustaka ini dalam dokumentasinya, yang ditautkan dari halaman rilis.

Masalah yang diketahui

Dukungan Azure AD B2C

Pustaka ini tidak mendukung layanan Azure AD B2C .

Untuk masalah terbuka lainnya, lihat repositori GitHub pustaka.

Berikan umpan balik

Jika Anda mengalami bug atau memiliki saran, silakan membuka masalah.

Berkontribusi

Jika Anda ingin berkontribusi pada pustaka ini, baca panduan berkontribusi untuk mempelajari selengkapnya tentang cara membuat dan menguji kode.

Tayangan