Chrome 支援 FedCM 中的自動重新驗證
Federated Credential Management API (FedCM) 是可保護隱私權的 ID 聯合網頁 API。透過身分聯盟,RP (依賴方) 可依靠 IdP (身分提供者) 為使用者提供帳戶,而不需要要求使用者輸入新的使用者名稱和密碼。
FedCM 可讓瀏覽器瞭解 RP 和 IdP 交換資訊的背景。這項功能會向使用者說明所分享的資訊和權限層級,並防止不當濫用行為。自 Chrome 108 版起,FedCM 已可供使用。
在 Chrome 115 中,FedCM 將支援自動重新驗證功能,可改善使用者體驗,並在初始同意後,讓重新驗證程序更為流暢。
自動重新驗證
目前,使用者透過 FedCM API 在 RP 上與 IdP 建立聯合帳戶後,下次造訪網站時,他們需要在使用者介面中完成相同的步驟。也就是說,使用者必須明確手動重新確認,才能重新驗證並繼續登入流程。
雖然在使用者建立聯合帳戶以防追蹤 (這是 FedCM 的主要目標之一) 之前,明確的使用者體驗是合理的,但在使用者完成這項操作後,再強制執行這類操作就沒有必要,因為使用者已授權允許 RP 和 IdP 之間的通訊,因此對於使用者來說,再次確認這類操作並無隱私權或安全性上的好處。因此,我們推出更精簡的使用者體驗,讓 RP 可為回訪使用者選擇這項服務。
FedCM 自動重新驗證 (簡稱「auto-reauthn」) 可讓使用者在使用 FedCM 進行初次驗證後,自動重新驗證。此處的「初始驗證」是指使用者在同一個瀏覽器執行個體上首次輕觸 FedCM 登入對話方塊中的「以...身分繼續」按鈕,建立帳戶或登入 RP 網站。

選擇自動重新授權選項
雖然我們推出自動重新驗證機制,以提供更優質的使用者體驗並符合規格,但如果沒有任何程式碼變更,預設使用者體驗將有所不同。啟用自動重新驗證功能後,瀏覽器會根據您在開發人員提供的 navigator.credentials.get()
中 mediation
選項中選取的選項,變更其行為。
const cred = await navigator.credentials.get({
identity: {
providers: [{
configURL: "https://idp.example/fedcm.json",
clientId: "1234",
}],
},
mediation: 'optional', // this is the default
});
mediation
是 Credential Management API 中的屬性,其行為與 PasswordCredential 和 FederatedCredential 相同,也部分支援 PublicKeyCredential。這個屬性可接受下列四個值:
'required'
:一律需要仲裁才能繼續,例如按一下 UI 上的「繼續」按鈕。如果您希望使用者每次需要驗證時都明確授予權限,請選擇這個選項。'optional'
(預設):盡可能自動重新授權,否則需要中介服務。建議您在登入頁面中選擇這個選項。'silent'
:盡可能自動重新授權,如果無法自動重新授權,則在未要求中介服務的情況下,以靜默方式失敗。建議您在專屬登入頁面以外,但希望使用者保持登入狀態的網頁上選取這個選項,例如運送網站的商品頁面,或新聞網站的文章頁面。'conditional'
:用於 WebAuthn,目前無法用於 FedCM。
在這個呼叫中,系統會在下列情況下自動重新授權:
- FedCM 可供使用。舉例來說,使用者並未在設定中為 FedCM 全域或 RP 停用。
- 使用者只使用一個具備 FedCM API 的帳戶,透過這個瀏覽器登入網站。
- 使用者已使用該帳戶登入 IdP。
- 自動重新授權未在過去 10 分鐘內發生。
- 在先前登入後,RP 並未呼叫
navigator.credentials.preventSilentAccess()
。
在符合上述條件時,只要叫用 FedCM navigator.credentials.get()
,系統就會嘗試自動重新驗證使用者。
使用 preventSilentAccess()
強制執行中介服務
在使用者登出後立即自動重新驗證,並不會帶來良好的使用者體驗。因此,FedCM 會在自動重新授權後設有 10 分鐘的靜默期,以防發生這種行為。也就是說,除非使用者在 10 分鐘內重新登入,否則自動重新授權的情況最多會發生 10 分鐘一次。當使用者明確登出 RP (例如點選登出按鈕),RP 應呼叫 navigator.credentials.preventSilentAccess(),明確要求瀏覽器停用自動重新驗證功能。
function signout() {
navigator.credentials.preventSilentAccess();
location.href = '/signout';
}
使用者可以在設定中選擇停用自動重新授權功能
使用者可透過設定選單選擇停用自動重新授權功能:
- 在 Chrome 電腦版上,依序前往
chrome://password-manager/settings
> 自動登入。 - 在 Android 版 Chrome 中,依序開啟「設定」 >「密碼管理工具」 > 輕觸右上角的齒輪圖示 >「自動登入」。
只要停用切換鈕,使用者就能完全停用自動重新驗證行為。如果使用者在 Chrome 例項中登入 Google 帳戶並啟用同步處理功能,系統就會儲存這項設定並在裝置間同步處理。
提供意見
如果您正在測試 FedCM,可以前往 crbug.com,在「Blink」>「Identity」>「FedCM」元件下方分享意見回饋或遇到的問題。
相片來源:Noah Samuel Franz 在 Unsplash 上提供