Tanya jawab umum tentang MSAL Node

General

Kapan MSAL Node digunakan?

MSAL Node mendukung autentikasi berbasis server untuk aplikasi publik/rahasia. Ini lebih berlaku untuk skenario autentikasi berbasis server/API Web yang memerlukan autentikasi. Daftar lengkap skenario yang didukung dapat ditemukan di sini dan alur yang didukung tercantum di sini

Apa status ADAL Node? Apakah panduan migrasi tersedia?

ADAL Node saat ini dalam pemeliharaan dan kami menyarankan semua pengguna untuk beralih ke MSAL Node. Node MSAL dirancang untuk sepenuhnya menggantikan simpul ADAL. Bagi mereka yang ingin bermigrasi dari ADAL ke MSAL, kami telah menyediakan Dokumen Migrasi untuk membantu dalam migrasi. Harap dicatat bahwa semua aplikasi mungkin tidak memiliki migrasi yang lancar karena ini adalah perombakan lengkap dari fungsionalitas lama.

Apa saja layanan yang didukung?

MSAL Node mendukung Microsoft Entra ID, MSA, ADFS, dan B2C. Sampel kami menunjukkan penggunaan di sini. MSAL Node juga mendukung aplikasi tunggal dan multi-penyewa.

Catatan: ADFS saat ini didukung, sampel mandiri belum diterbitkan. Silakan periksa ruang ini untuk pembaruan segera.

Apa itu Aplikasi Publik atau Aplikasi Rahasia? Apa yang perlu saya ketahui selama pendaftaran aplikasi?

Silakan temukan ini dalam dasar-dasar MSAL

Apa nilai default string authority jika saya menyediakan "authority" dan "azureCloudOptions"?

Jika pengembang menyediakan azureCloudOptions, MSAL.js akan menimpa nilai apa pun yang disediakan di authority. MSAL.js juga akan memberikan preferensi pada parameter yang disediakan dalam request lebih dari configuration. Harap dicatat bahwa jika azureCloudOptions diatur dalam konfigurasi, mereka akan lebih diutamakan di atas authority di request. Jika pengembang perlu menimpa ini, mereka perlu menetapkan azureCloudOptions di request.

Apa yang akan menjadi masa pakai token?

  • Microsoft Entra: Temukan referensi terbaru untuk Microsoft Entra di sini. Harap dicatat bahwa beberapa fitur yang dapat dikonfigurasi untuk jenis token tertentu baru-baru ini dihentikan.
  • B2C: Temukan panduan seumur hidup token B2C di sini

Bagaimana cara mendapatkan Token Refresh?

Node MSAL tidak mengekspos token refresh karena alasan keamanan. Sebagai gantinya, kami mengelola token refresh melalui cache dan memperbaruinya sesuai kebutuhan untuk mengambil Token Id dan Token Akses yang sesuai untuk pengembang. Gunakan API yang sesuai acquireToken* untuk mendapatkan token akses, dan MSAL akan memastikannya diperbarui jika perlu. Jika Anda memiliki token refresh yang diperoleh dengan cara lain, Anda dapat menggunakan API acquireTokenByRefreshToken (lihat juga: Sampel Refresh Token). Detail selengkapnya tentang token Microsoft Entra dapat ditemukan di sini

Apakah Electron didukung?

Yes. Silakan merujuk ke sampel MSAL Node.

Apakah alur interaktif didukung?

Yes. MSAL Node menyediakan API acquireTokenInteractive() pada PublicClientApplication yang menangani kedua tahap alur kode otorisasi. Ini membuka jendela peramban agar pengguna dapat login dan mengembalikan AuthenticationResult. Lihat dokumentasi memperoleh permintaan token untuk detail selengkapnya dan sampel auth-code-cli-app untuk contoh implementasi.

Apakah SPAs didukung oleh MSAL Node?

Silakan merujuk ke Browser MSAL untuk kasus penggunaan berbasis SPA. MSAL Node harus menjadi pilihan untuk aplikasi desktop, aplikasi web, API web, atau skenario autentikasi sisi server.

Apa itu ekstensi MSAL Node? Apa itu Plugin Cache?

Ekstensi MSAL Node adalah pustaka dukungan untuk MSAL Node yang menawarkan mekanisme aman bagi aplikasi klien untuk melakukan serialisasi dan persistensi cache token lintas platform. Silakan temukan penggunaan, sampel, dan lainnya tentang hal ini di sini

Dapatkah plugin cache yang disediakan dalam ekstensi MSAL Node digunakan dalam aplikasi Electron?

Ya, bisa. Jika Anda mengalami masalah terkait versi node, lihat catatan ini yang menyediakan langkah-langkah untuk memecahkan masalah.

Versi Node.js apa yang didukung? Bagaimana cara melewati kesalahan penginstalan jika saya ingin menggunakan versi Node.js pengembangan aktif?

MSAL Node secara resmi mendukung rilis LTS stabil bernomor genap sebagaimana didokumentasikan di sini.

Jika Anda ingin mengatasinya, harap perhatikan:

  • Yarn: Teruskan flag --ignore-engines ke perintah yarn.
  • npm: Tambahkan engine-strict=false ke file .npmrc Anda.

Important

MSAL Node v5 memerlukan Node.js 20 atau yang lebih baru. Node.js 16 dan 18 tidak lagi didukung.

Bagaimana cara menerapkan pendaftaran layanan mandiri dengan MSAL Node?

MSAL Node mendukung pendaftaran layanan mandiri dalam alur kode autentikasi. Silakan lihat dokumen kami di sini untuk nilai permintaan yang didukung dalam permintaan dan hasil yang diharapkan, dan di sini untuk gambaran umum pendaftaran layanan mandiri dan perubahan konfigurasi yang perlu dilakukan pada penyewa Azure Anda. Harap dicatat bahwa pendaftaran layanan mandiri tidak tersedia di lingkungan B2C dan pengujian.

Mengapa aplikasi saya tidak berfungsi dengan benar saat berjalan di belakang proksi?

Pada MSAL Node v5, konfigurasi proksi ditangani melalui klien HTTP kustom. Terapkan klien jaringan Anda sendiri dengan membuat instans INetworkModule dengan dukungan proksi dan menyediakannya sebagai networkClientopsi konfigurasi sistem. Lihat sampel INetworkModule kustom misalnya.

Bagaimana cara menerapkan agen http kustom di MSAL Node?

Pada MSAL Node v5, customAgentOptions parameter telah dihapus. Untuk menggunakan agen HTTP kustom, terapkan klien jaringan Anda sendiri dengan membuat instans INetworkModule dan mengonfigurasi agen di dalamnya. Berikan klien jaringan kustom sebagai networkClient dalam opsi konfigurasi sistem. Lihat sampel INetworkModule kustom misalnya.

B2C

Bagaimana cara menangani alur pengguna untuk pengaturan ulang kata sandi?

Pengalaman reset kata sandi baru sekarang menjadi bagian dari kebijakan pendaftaran atau masuk. Ketika pengguna memilih tautan Lupa kata sandi Anda?, mereka akan segera dialihkan ke pengalaman Lupa Kata Sandi.

Rekomendasi kami adalah beralih ke pengalaman reset kata sandi baru karena menyederhanakan status aplikasi dan mengurangi penanganan kesalahan di ujung pengguna. Jika karena alasan tertentu Anda harus menggunakan alur pengguna lama untuk pengaturan ulang kata sandi, Anda harus menangani kode kesalahan AADB2C90118 yang dikembalikan oleh layanan B2C saat pengguna memilih tautan Lupa kata sandi Anda? Untuk melihat bagaimana hal ini dilakukan, lihat sampel: Sampel aplikasi web MSAL Node B2C (menggunakan kode autentikasi)

Compatibility

Dapatkah saya menggunakan MSAL Node dengan Microsoft Graph JavaScript SDK?

Ya, MSAL Node dapat digunakan sebagai penyedia autentikasi kustom untuk Microsoft Graph JavaScript SDK. Untuk contoh implementasi, silakan lihat contoh berikut: Express Web App yang memanggil Graph API.

Dapatkah saya menyediakan aplikasi MSAL Node melalui baris perintah?

Ya, kami merekomendasikan Powershell Graph SDK baru untuk melakukannya. Misalnya, skrip di bawah ini membuat aplikasi Microsoft Entra dengan URI pengalihan kustom jenis aplikasi Seluler dan Desktop (alias InstallClient) dan izin User.Read untuk Microsoft Graph dalam penyewa yang ditentukan oleh pengguna, lalu menyediakan perwakilan layanan di penyewa yang sama berdasarkan objek aplikasi ini:

Import-Module Microsoft.Graph.Applications

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Connect-MgGraph -TenantId "ENTER_TENANT_ID_HERE" -Scopes "Application.ReadWrite.All"

# User.Read delegated permission for Microsoft Graph
$mgUserReadScope = @{
    "Id" = "e1fe6dd8-ba31-4d61-89e7-88639da4683d" # permission Id
    "Type" = "Scope"
}

# Add additional permissions to array below
$mgResourceAccess = @($mgUserReadScope)

[object[]]$requiredResourceAccess = @{
    "ResourceAppId" = "00000003-0000-0000-c000-000000000000" # MS Graph App Id
    "ResourceAccess" = $mgResourceAccess
}

# Create the application
$msalApplication = New-MgApplication -displayName myMsalDesktopApp `
    -SignInAudience AzureADMyOrg `
    -PublicClient @{RedirectUris = "msal://redirect"} `
    -RequiredResourceAccess $requiredResourceAccess

# Provision the service principal
New-MgServicePrincipal -AppId $msalApplication.AppId