Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pustaka Autentikasi Microsoft (MSAL) Node mendukung perolehan token dari broker token asli. Saat menggunakan broker asli, token refresh terikat ke perangkat tempat mereka diperoleh dan tidak dapat diakses oleh msal-node atau aplikasi. Ini memberikan tingkat keamanan yang lebih tinggi yang tidak dapat dicapai sendiri msal-node .
Artikel ini menjelaskan cara mengonfigurasi broker Windows, menyiapkan bukti kepemilikan, dan memahami perilaku khusus broker.
Dukungan broker tersedia di platform berikut:
| Platform | Broker | Dokumentasi |
|---|---|---|
| Windows | Pengelola Akun Web (WAM) | Broker Windows (artikel ini) |
| macOS | Plug-in Microsoft Enterprise SSO (Company Portal) | broker untuk macOS |
| Linux | Microsoft Single Sign-on untuk Linux | Broker Linux |
Apa itu broker
Broker autentikasi adalah komponen yang berjalan pada komputer pengguna dan mengelola jabat tangan autentikasi dan siklus hidup token untuk akun yang terhubung. Pada Windows, peran ini dilakukan oleh Web Account Manager (WAM). Manfaat utama meliputi:
- Keamanan yang ditingkatkan. Peningkatan keamanan dikirimkan melalui pembaruan OS atau broker tanpa memerlukan perubahan kode aplikasi. Token refresh terikat perangkat dan dilindungi dari eksfiltrasi.
- Dukungan fitur. Akses ke kemampuan OS yang kaya seperti Windows Hello, kebijakan Akses Bersyarat Microsoft Entra, dan kunci keamanan Fast Identity Online (FIDO) tanpa kode perancah tambahan.
- Integrasi sistem. Aplikasi terhubung ke pemilih akun bawaan, memungkinkan pengguna untuk dengan cepat memilih akun yang ada alih-alih memasukkan kembali kredensial.
- Perlindungan token. Broker memastikan token refresh terikat perangkat dan memungkinkan aplikasi memperoleh token akses bukti kepemilikan.
Arsitektur yang didukung
- Windows: x64, x86, ARM64
Prasyarat
- Node.js 18 atau yang lebih baru
- Menginstal
@azure/msal-node-extensionssebagai dependensi - Daftarkan URI pengalihan broker pada pendaftaran aplikasi Anda. Untuk nilai yang diperlukan, lihat Mengalihkan URI.
Pengalihan URI
Daftarkan URI pengalihan berikut di bawah platform Aplikasi seluler dan desktop di portal Azure:
ms-appx-web://Microsoft.AAD.BrokerPlugin/<your-client-id>
Ganti <your-client-id> dengan ID klien aplikasi Anda.
Aktifkan Fitur
Mengaktifkan broker token hanya memerlukan satu parameter konfigurasi. Teruskan instance NativeBrokerPlugin dalam konfigurasi broker:
import { PublicClientApplication, Configuration } from "@azure/msal-node";
import { NativeBrokerPlugin } from "@azure/msal-node-extensions";
const msalConfig: Configuration = {
auth: {
clientId: "your-client-id",
},
broker: {
nativeBrokerPlugin: new NativeBrokerPlugin(),
},
};
const pca = new PublicClientApplication(msalConfig);
Note
msal-node tidak akan beralih ke alur tanpa broker jika terjadi kegagalan. Hanya aktifkan aliran broker di lingkungan yang mendukungnya untuk menghindari kegagalan tak terduga.
Contoh yang berfungsi dapat ditemukan di sampel auth-code-cli-brokered-app.
Induk jendela
Agar perintah autentikasi ditampilkan melalui aplikasi panggilan dan memblokir interaksi lebih lanjut, berikan handel jendela aplikasi ke acquireTokenInteractive API.
Untuk aplikasi CLI, upaya terbaik untuk menemukan handel jendela dilakukan di bawah tenda, tetapi tidak dapat diandalkan.
Jika Anda menggunakan Electron, gunakan getNativeWindowHandle API dan teruskan hasilnya ke :acquireTokenInteractive
import { BrowserWindow } from "electron";
const win = new BrowserWindow();
const pca = new PublicClientApplication(msalConfig);
pca.acquireTokenInteractive({
windowHandle: win.getNativeWindowHandle(),
});
Bukti kepemilikan
Bukti kepemilikan token akses (PoP) didukung saat memperoleh token melalui broker asli. Untuk meminta token PoP, tambahkan properti berikut ke objek permintaan yang disediakan ke acquireTokenInteractive atau acquireTokenSilent:
Parameter permintaan AT PoP
| Nama | Deskripsi | Wajib diisi |
|---|---|---|
authenticationScheme |
Menunjukkan apakah MSAL harus memperoleh token Bearer atau PoP. Defaultnya adalah Bearer. |
Required |
resourceRequestMethod |
Nama all-caps dari metode HTTP permintaan yang akan menggunakan token yang ditandatangani (GET, POST, PUT, dll.) |
Required |
resourceRequestUri |
URL sumber daya yang dilindungi tempat token akses dikeluarkan | Required |
shrNonce |
Tanda waktu yang dihasilkan server, ditandatangani, dan dikodekan dalam Base64URL sebagai string. Nonce ini digunakan untuk memitigasi ketidaksinkronan waktu dan serangan manipulasi waktu yang bertujuan memungkinkan pra-pembuatan token PoP. | Fakultatif |
Contoh penggunaan
Contoh ini meminta token bukti kepemilikan dengan mengatur skema autentikasi dan properti permintaan HTTP yang ditandatangani:
import { PublicClientApplication, Configuration, AuthenticationScheme } from "@azure/msal-node";
import { NativeBrokerPlugin } from "@azure/msal-node-extensions";
const msalConfig: Configuration = {
auth: {
clientId: "your-client-id",
},
broker: {
nativeBrokerPlugin: new NativeBrokerPlugin(),
},
};
const pca = new PublicClientApplication(msalConfig);
const popTokenRequest = {
scopes: ["User.Read"],
authenticationScheme: AuthenticationScheme.POP,
resourceRequestMethod: "POST",
resourceRequestUri: "YOUR_RESOURCE_ENDPOINT",
shrNonce: "NONCE_ACQUIRED_FROM_RESOURCE_SERVER",
};
pca.acquireTokenInteractive(popTokenRequest);
pca.acquireTokenSilent(popTokenRequest);
Note
Bukti kepemilikan token akses hanya didukung melalui alur broker asli dan tidak tersedia dalam alur non-broker.
Perbedaan saat menggunakan broker Windows
Ada beberapa hal yang mungkin berperilaku berbeda ketika memperoleh token melalui broker asli:
- Parameter
forceRefreshuntukacquireTokenSilentpanggilan tidak didukung. Anda mungkin menerima token yang di-cache dari broker, apa pun nilai yang ditetapkan untuk flag ini. - Jika broker perlu meminta pengguna untuk berinteraksi, prompt sistem akan muncul. Ini mengubah pengalaman pengguna (UX) karena autentikasi tidak terjadi di jendela browser.
- Bukti kepemilikan atas token akses didukung oleh broker, tetapi tidak didukung oleh alur tanpa broker.