雖然 Federated Credential Management API 是在 Chrome 108 中推出,但應該還會持續演進。未規劃任何破壞性變更。
這些最新消息的適用對象
這些更新適用於以下情況:
- 您是使用 Federated Credential Management API 的 IdP。
- 您是 IdP 或 RP,且想要擴充 API 以符合您的用途,例如您觀察到或參加 FedID CG 存放區的討論,並想瞭解 API 的變更。
- 您是瀏覽器供應商,且想要瞭解 API 的實作狀態。
如果您剛開始使用這個 API,或尚未試用過,請參閱 Federated Credential Management API 簡介。
變更記錄
如要掌握 FedCM API 異動的最新資訊,請查看我們的網誌或電子報。
Chrome 125 (2024 年 4 月)
- 這個規格已將「帳戶清單端點」的名稱更新為「帳戶端點」,因此我們的說明文件據此保持一致。
- Button Mode API 的來源試用適用於 Chrome 電腦版 125。詳情請參閱 FedCM 更新:Button Mode API 來源試用、CORS 和 SameSite。
- 自 Chrome 125 版起,系統會在 ID 斷言端點上強制執行 CORS。
- 從 Chrome 125 開始,Chrome 只會將明確標示為
SameSite=None
的 Cookie 傳送至 ID 斷言端點和帳戶端點。
Chrome 123 (2024 年 2 月)
- 新增對 Domain Hint API 的支援。Domain Hint API 可讓 RP 在 FedCM API 呼叫中指定
domainHint
屬性,只顯示使用者的相符帳戶。
Chrome 122 (2024 年 1 月)
- 新增對 Connection API 的支援。中斷連線 API 可讓 RP 在不使用第三方 Cookie 的情況下,將使用者與 IdP 的帳戶取消連結。
- 如果 RP 和 IdP 相同,系統會略過檢查
/.well-known/web-identity
的作業。 - 子資源現在可以設定同網站登入狀態。
Chrome 121 (2023 年 12 月)
- 觸發 FedCM 自動重新驗證的寬鬆條件:
- 只有在使用者回訪時,才會觸發 FedCM 中的自動重新驗證功能。這表示使用者必須在每個瀏覽器執行個體中使用 FedCM 登入一次 RP,才能觸發自動重新驗證。這項條件最初是導入,用來降低攻擊者偽裝成識別資訊提供者 (IdP),並誘騙瀏覽器在使用者不知情或同意的情況下自動重新驗證使用者的風險。不過,如果追蹤器可在 RP 情境下存取第三方 Cookie,這項設計就無法保證能夠保障隱私權。FedCM 僅提供部分透過第三方 Cookie 實現的功能子集,因此如果追蹤器已經存取 RP 內容上的第三方 Cookie,那麼存取 FedCM 便不會出現額外的隱私風險。
由於第三方 Cookie 的使用確實是正當的,而放寬條件將可改善使用者體驗,因此這項行為將從 Chrome 121 版開始變更。 我們決定放寬將使用者視為回訪的條件:如果 IdP 可在 RP 情境中取得第三方 Cookie 給 IdP,Chrome 就會信任 IdP 對透過approved_clients
清單指定使用者帳戶狀態發出的憑證附加資訊,並在適用情況下觸發自動重新驗證。第三方 Cookie 可透過下列方式存取:使用者設定、企業政策、經驗法則 (Safari、Firefox、Chrome) 和其他網路平台 API (例如 Storage Access API)。請注意,如果 IdP 日後失去第三方 Cookie 存取權,如果使用者之前從未在 FedCM UI 中明確授予權限 (例如,按一下「Continue as」按鈕),系統仍會將使用者視為新使用者。
開發人員不需要採取任何行動。請注意,如果 IdP 具有第三方 Cookie 存取權,並宣告使用者之前曾在 RP 上建立帳戶,則這項變更可能會觸發更多自動重新驗證流程。
- 只有在使用者回訪時,才會觸發 FedCM 中的自動重新驗證功能。這表示使用者必須在每個瀏覽器執行個體中使用 FedCM 登入一次 RP,才能觸發自動重新驗證。這項條件最初是導入,用來降低攻擊者偽裝成識別資訊提供者 (IdP),並誘騙瀏覽器在使用者不知情或同意的情況下自動重新驗證使用者的風險。不過,如果追蹤器可在 RP 情境下存取第三方 Cookie,這項設計就無法保證能夠保障隱私權。FedCM 僅提供部分透過第三方 Cookie 實現的功能子集,因此如果追蹤器已經存取 RP 內容上的第三方 Cookie,那麼存取 FedCM 便不會出現額外的隱私風險。
Chrome 120 (2023 年 11 月)
- 新增對 Chrome 120 版中以下三項功能的支援:
- Login Status API:Login Status API 是一種網站,特別是 IdP,會通知瀏覽器使用者的登入狀態。透過這個 API,瀏覽器可減少對 IdP 不必要的要求,並降低潛在的時間攻擊。您必須有登入狀態 API,才能使用 FedCM。經此變更後,在第三方 Cookie 遭到封鎖的情況下,不再需要使用
chrome://flags/#fedcm-without-third-party-cookies
旗標即可啟用 FedCM。 - Error API:Error API 會顯示瀏覽器 UI,並顯示 IdP 提供的錯誤資訊,藉此通知使用者。
- 自動選取旗標 API:Auto-Selected Flag API 會分享在發生自動重新驗證或明確中介服務時,透過輕觸 IdP 和 RP 的「Continue as」按鈕,取得明確的使用者權限。只有在獲得 IdP 和 RP 通訊的使用者權限後,才會共用資料。
- Login Status API:Login Status API 是一種網站,特別是 IdP,會通知瀏覽器使用者的登入狀態。透過這個 API,瀏覽器可減少對 IdP 不必要的要求,並降低潛在的時間攻擊。您必須有登入狀態 API,才能使用 FedCM。經此變更後,在第三方 Cookie 遭到封鎖的情況下,不再需要使用
Chrome 117 (2023 年 9 月)
- 從 Chrome 117 版開始,適用於 Android 的 IdP Sign-In Status API 來源試用。詳情請參閱 FedCM 更新資訊:IdP Sign-In Status API、登入提示等。
Chrome 116 (2023 年 8 月)
- 新增對 Chrome 116 版中以下三項功能的支援:
- Login Hint API:指定要登入的偏好使用者帳戶。
- User Info API:擷取回訪者的資訊,讓識別資訊提供者 (IdP) 在 iframe 中顯示個人化登入按鈕。
- RP Context API:使用與 FedCM 對話方塊中的「登入」不同的標題。
- 目前提供 IdP Sign-In Status API 的來源試用。詳情請參閱 FedCM 更新資訊:IdP Sign-In Status API、登入提示等。
Chrome 115 (2023 年 6 月)
- 新增自動重新驗證功能支援,讓使用者可在初次使用 FedCM 進行驗證後,自動重新驗證。這不但能改善使用者體驗,還能讓初次驗證後重新驗證 RP 變得更簡單。進一步瞭解 FedCM 自動重新驗證。
Chrome 110 (2023 年 2 月)
- 如為 ID 斷言端點,IdP 需檢查
Origin
標頭 (而非Referer
標頭),確認值是否與用戶端 ID 來源相符。 - FedCM 現可支援跨來源 iframe。嵌入工具應指定 Permissions-Policy
identity-credentials-get
,允許在嵌入的跨來源 iframe 中使用 FedCM API。您可以查看跨來源 iframe 的範例。 - 已新增 Chrome 旗標
chrome://flags/#fedcm-without-third-party-cookies
。透過此標記,您可以封鎖第三方 Cookie,藉此測試 Chrome 中的 FedCM 功能。詳情請參閱 FedCM 說明文件。
Chrome 108 (2022 年 10 月)
- 在文件中,「頂層資訊清單」現已改名為「well-known file」。 您不需要變更導入方式。
- 在文件中,「IdP 資訊清單」現已改名為「設定檔」。您不需要變更實作方式。
- 「設定檔」中的
id_token_endpoint
已重新命名為id_assertion_endpoint
。 - 傳送至 IdP 的要求現在包含
Sec-Fetch-Dest: webidentity
標頭,而不是Sec-FedCM-CSRF: ?1
標頭。
Chrome 105 (2022 年 8 月)
- 在文件中新增重要的安全性資訊。識別資訊提供者 (IdP) 需要檢查
Referer
標頭是否與先前在 ID 權杖端點上註冊的 RP 相符。 - 頂層資訊清單的名稱已從
/.well-known/fedcm.json
重新命名為/.well-known/web-identity
,且provider_urls
中指定的網址應包含檔案名稱。 FederatedCredential
執行個體上的login()
、logout()
和revoke()
方法已無法使用。- Federated Credential Management API 現已使用新的類型
IdentityCredential
,而非FederatedCredential
。這可用於功能偵測,但這主要是看不見的變更。 - 將登入功能從
navigator.credentials.get()
和FederatedCredential.prototype.login()
的組合移至navigator.credentials.get()
。 - 資訊清單中的撤銷端點已失效。
- 如果是
navigator.credentials.get()
呼叫,請使用identity
欄位,而非federated
欄位。 url
現在是configURL
,且必須是資訊清單 JSON 檔案的完整網址,而非navigator.credentials.get()
呼叫的路徑。nonce
現在是navigator.credentials.get()
的選用參數。hint
不再提供navigator.credentials.get()
選項。
const credential = await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/anything.json',
clientId: '********',
nonce: '******'
}]
}
});
const { token } = credential;
Chrome 104 (2022 年 6 月)
- 傳送至 ID 權杖端點的
consent_acquired
參數現在是disclosure_text_shown
。這個值不會變更。 - IdP 資訊清單中的品牌宣傳圖示已停止支援 SVG 圖片,但已不再需要 RP 的內容安全政策允許。
Chrome 103 (2022 年 5 月)
- 支援電腦環境。
- 支援電腦版個別收視率設定。
- 用戶端中繼資料端點現在是選用項目。在這個端點中,隱私權政策網址也是選用項目。
- 在文件中新增使用 CSP
connect-src
的注意事項。