MSAL.js 支援從 Windows 的網頁帳戶管理器(WAM)取得代幣。 這些權杖會綁定至取得它們時所使用的裝置,且不會儲存在瀏覽器的 localStorage 或 sessionStorage 中。
受支援的環境
此功能目前僅支援以下環境:
- 一台運行支援此功能的 Windows 版本的機器(稍後會詳細說明)
- Chrome 和 Edge 瀏覽器,或 Teams
- 若使用 Chrome 或 Edge 則安裝 Windows 帳號擴充功能(版本 1.0.5 或更高)
- 應用程式必須託管於
https
此外,此功能目前僅支援工作與學校帳號
在 MSAL.js 中啟用此功能
為了啟用這個功能 MSAL.js 請在你的設定物件中將旗標設 allowPlatformBroker 為 true,如下:
const msalConfig = {
auth: {
clientId: "insert-clientId"
},
system: {
allowPlatformBroker: true
}
};
此外,在呼叫其他 MSAL.js API 前,你還需要先呼叫並等待新 initialize API。
const pca = new PublicClientApplication(msalConfig);
// Initialize will establish a connection with the browser extension, if present
await pca.initialize();
// Call handleRedirectPromise, after initialization is complete
await pca.handleRedirectPromise();
// After initialize and handleRedirectPromise have completed, you may call any of the other APIs as you would without this feature
pca.acquireTokenSilent();
不需要其他變更即可支援這項新功能。 任何從支援環境存取你的應用程式的用戶,現在都能取得裝置綁定的代幣。 在不受支援的環境中,使用者仍會透過傳統的 Web 型流程取得權杖。
工作樣本可在此處找到
使用 WAM 取得權杖時的差異
透過 WAM 取得代幣時,有幾件事可能會有些不同。
- 所有與快取相關的設定僅適用於 MSAL 的本地快取。 原生代理程式會管理其自身較安全的快取,並以該快取取代瀏覽器儲存體,且不支援設定其快取行為。 這表示無論請求參數的值為何,例如:
forceRefresh、或cacheLookupPolicystoreInCache,你都可能收到快取的標記。 此外,從原生代理收到的憑證 不會 儲存在本地或會話儲存中,無論你在 PublicClientApplication 上設定了什麼。 - 若 WAM 需要提示使用者互動,系統提示將被開啟。 這個提示看起來和你可能習慣的瀏覽器彈出視窗有點不同。
- 在 WAM 提示下切換帳號不被支援,若發生 MSAL.js 會跳出錯誤代碼(Error Code: user_switch)。 你的應用程式有責任抓出這個錯誤,並以符合你情境的方式處理(例如顯示錯誤頁面、用新帳號重試、用原帳號重試等)。