支援 FedCM 的自動重新驗證

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
});

mediationCredential Management API 中的屬性,其行為與 PasswordCredentialFederatedCredential 相同,也部分支援 PublicKeyCredential這個屬性可接受下列四個值:

  • 'required':一律需要仲裁才能繼續,例如按一下 UI 上的「繼續」按鈕。如果您希望使用者每次需要驗證時都明確授予權限,請選擇這個選項。
  • 'optional'(預設):盡可能自動重新授權,否則需要中介服務。建議您在登入頁面中選擇這個選項。
  • 'silent':盡可能自動重新授權,如果無法自動重新授權,則在未要求中介服務的情況下,以靜默方式失敗。建議您在專屬登入頁面以外,但希望使用者保持登入狀態的網頁上選取這個選項,例如運送網站的商品頁面,或新聞網站的文章頁面。
  • 'conditional':用於 WebAuthn,目前無法用於 FedCM。

在這個呼叫中,系統會在下列情況下自動重新授權:

在符合上述條件時,只要叫用 FedCM navigator.credentials.get(),系統就會嘗試自動重新驗證使用者。

使用者透過 FedCM 自動重新驗證。

使用 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 FranzUnsplash 上提供