聯合憑據管理 (FedCM) API
聯邦身份憑證管理 API (或 FedCM API) 提供了一種標準的機制,使 身份提供方 (IdP) 能夠以保護隱私的方式在 Web 上提供身份聯合服務,而無需 第三方 Cookie 和重定向。這包括一個 JavaScript API,它允許將聯合身份驗證用於在網站上登入或註冊等活動。
FedCM 概念
身份聯合是指將使用者身份驗證委託給需要使用者註冊或登入的網站(如電子商務或社交網站,也稱為 信賴方 或 RP),委託給一個受信任的第三方身份提供方 (IdP),例如 Google、Facebook/Meta、GitHub 等。
RP 可以與 IdP 整合,允許使用者使用他們在 IdP 註冊的賬戶進行登入。透過一小組專用的 IdP 進行身份聯合,在安全性、消費者信任度和使用者體驗方面改進了 Web 身份驗證,相比於每個網站都使用單獨的使用者名稱和密碼管理自己的登入需求。
問題在於,傳統的身份聯合依賴於 <iframe>、重定向和第三方 Cookie,而這些也用於第三方跟蹤。瀏覽器正在限制這些功能的使用,以保護使用者隱私,但其副作用是使得合法的、非跟蹤性的用途更難實現,包括身份聯合。
這會影響到一般的聯合登入,以及更具體的身份聯合用例
- OIDC 前端通道登出:此流程要求 IdP 嵌入多個 RP
<iframe>,這些<iframe>依賴於 RP Cookie。 - 社交小部件:為了提供社交小部件,必須從 RP 頂級域名提供 IdP 的第三方 Cookie。
- 個性化按鈕:在 RP 域名下的
<button>上顯示個性化的登入資訊,是透過 IdP<iframe>實現的,該<iframe>需要第三方 Cookie。 - 在沒有頂級導航或彈出視窗的情況下重新整理會話。
FedCM 旨在解決這個問題,為 Web 上的聯合身份流程提供一個專用機制,並使支援的瀏覽器能夠在 RP 上提供特殊的 UI 元素,允許使用者選擇一個 IdP 賬戶用於登入。
使用 FedCM API 分為兩部分,在下面的連結指南中進行了介紹
- FedCM 的 IdP 整合 — 身份提供方需要提供什麼才能讓 RP 與之整合。
- RP 聯合登入 — RP 需要使用的 FedCM 功能,以便使用使用者的 IdP 賬戶登入使用者。FedCM 登入請求使用
navigator.credentials.get()方法啟動。
注意: Google Sign In 是一個已支援 FedCM 的 IdP 示例。 遷移到 FedCM 提供了希望將使用 Google Sign In 的現有應用程式遷移到聯合登入的 RP 的說明。
許可權策略整合和 <iframe> 支援
identity-credentials-get Permissions-Policy 可用於控制使用 FedCM 的許可權。更具體地說,它允許使用以下方法
開發人員可以透過 allow 屬性明確授予 <iframe> 使用 FedCM 的許可權
<iframe src="3rd-party.example" allow="identity-credentials-get"></iframe>
FedCM 在 <iframe> 中的可用性支援了幾個用例
- 大型網站不希望第三方登入指令碼控制頂層框架;相反,它們會希望在
<iframe>中新增該指令碼並呼叫 FedCM。 - 某些
<iframes>本身可能需要聯合身份驗證。
介面
IdentityCredential-
表示成功的聯合身份驗證產生的使用者身份憑證。包含
identity選項的成功的navigator.credentials.get()呼叫會完成一個IdentityCredential例項。 IdentityCredentialError-
表示身份驗證錯誤,指示使用者代理在使用者請求使用聯合憑證進行身份驗證後,未收到身份斷言。
IdentityProvider-
表示一個 IdP,並提供對相關資訊和功能的訪問。
-
定義 IdP 的登入功能,包括用於 更新 IdP 登入狀態 的
Navigator.login.setStatus()方法。
其他介面的擴充套件
CredentialsContainer.get(),identity選項。-
identity是一個包含聯合 IdP 詳細資訊的物件,信賴方 (RP) 網站可以使用這些資訊來登入使用者。它會促使get()呼叫發起一個請求,讓使用者使用 IdP 登入 RP。 -
提供對瀏覽器
NavigatorLogin物件的訪問。
HTTP 標頭
示例
有關示例程式碼,請參閱
規範
| 規範 |
|---|
| Federated Credential Management API # browser-api-identity-credential-interface |
瀏覽器相容性
載入中…