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 131(2024 年 10 月)
- Storage Access API 现在使用 FedCM 作为信任信号。
- 如果用户使用 FedCM 进行身份验证,并且 RP 已选择启用,则嵌入的 IdP 可以调用
requestStorageAccess()
方法,以自动获取对其自身顶级 Cookie 的存储访问权限,而无需额外向用户显示提示。
- 如果用户使用 FedCM 进行身份验证,并且 RP 已选择启用,则嵌入的 IdP 可以调用
Chrome 125(2024 年 4 月)
- 由于规范已将“账号列表端点”的名称更新为“账号端点”,因此我们的文档也相应进行了更新。
- Chrome 桌面版 125 提供 Button Mode API 源试用。如需了解详情,请参阅 FedCM 更新:Button Mode API 源代码试用、CORS 和 SameSite。
- 从 Chrome 125 开始,系统会在ID 断言端点上强制执行 CORS。
- 从 Chrome 125 开始,Chrome 将仅将明确标记为
SameSite=None
的 Cookie 发送到 ID 断言端点和账号端点。
Chrome 123(2024 年 2 月)
- 添加了对 Domain Hint API 的支持。借助域名提示 API,RP 可以在 FedCM API 调用中指定
domainHint
属性,以便仅向用户显示匹配的账号。
Chrome 122(2024 年 1 月)
- 添加了对 Disconnect API 的支持。借助 Disconnect API,RAP 可以解除其用户与 IdP 账号的关联,而无需依赖第三方 Cookie。
- 现在,当 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 开始,此行为将发生变化。我们决定放宽将用户视为回访用户的条件限制:如果第三方 Cookie 可供 RP 情境中的 IdP 使用,Chrome 将信任 IdP 通过approved_clients
列表指定的用户账号状态声明,并触发自动重新身份验证(如果适用)。第三方 Cookie 可通过以下方式获取:用户设置、企业政策、启发词语(Safari、Firefox、Chrome)和其他 Web 平台 API(例如 Storage Access API)。请注意,如果 IdP 日后失去对第三方 Cookie 的访问权限,如果用户之前从未在 FedCM 界面中明确授予权限(例如,点击继续按钮),则系统仍会将其视为新用户。
开发者无需执行任何操作。请注意,如果 IdP 有第三方 Cookie 访问权限,并且声明用户过去曾在 RP 上创建过账号,则此更改可能会更频繁地触发自动重新授权流程。
- FedCM 中的自动重新身份验证功能仅在用户回访时触发。这意味着,用户需要在每个浏览器实例中使用 FedCM 登录 RP 一次,然后才能触发自动重新授权。此条件最初引入是为了降低跟踪器冒充身份提供程序 (IdP) 并诱骗浏览器在用户不知情或未同意的情况下自动重新对用户进行身份验证的风险。不过,如果跟踪器有权访问 RP 情境中的第三方 Cookie,这种设计无法保证隐私保护优势。FedCM 仅提供可通过第三方 Cookie 实现的部分功能,因此,如果跟踪器已在 RP 情境中访问第三方 Cookie,则访问 FedCM 不会带来额外的隐私风险。
Chrome 120(2023 年 11 月)
- 在 Chrome 120 中添加了对以下三项功能的支持:
- 登录状态 API:登录状态 API 是一种机制,网站(尤其是身份提供方 [IdP])可以通过该机制告知浏览器其用户的登录状态。借助此 API,浏览器可以减少对 IdP 的不必要请求,并缓解潜在的时间攻击。Login Status API 是 FedCM 的必需 API。进行此更改后,在第三方 Cookie 被屏蔽时,无需
chrome://flags/#fedcm-without-third-party-cookies
标志即可启用 FedCM。 - Error API:Error API 会显示包含 IdP 提供的错误信息的浏览器界面,以便通知用户。
- Auto-Selected Flag API:每当发生自动重新身份验证或发生显式中介时,Auto-Selected Flag API 都会与 IdP 和 RP 共享是否通过点按 Continue as 按钮获取了显式用户权限。只有在为 IdP 和 RP 通信授予用户权限后,才会进行共享。
- 登录状态 API:登录状态 API 是一种机制,网站(尤其是身份提供方 [IdP])可以通过该机制告知浏览器其用户的登录状态。借助此 API,浏览器可以减少对 IdP 的不必要请求,并缓解潜在的时间攻击。Login Status API 是 FedCM 的必需 API。进行此更改后,在第三方 Cookie 被屏蔽时,无需
Chrome 117(2023 年 9 月)
- 从 Chrome 117 开始,Android 设备上提供 Idp Sign-In Status API 源试用。如需详细了解,请参阅 FedCM 更新:IdP 登录状态 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 登录状态 API、登录提示等。
Chrome 115(2023 年 6 月)
- 添加了对自动重新身份验证的支持,让用户在使用 FedCM 进行初始身份验证后再次访问时可自动重新进行身份验证。这可以改善用户体验,并在初始身份验证后更顺畅地向 RP 重新进行身份验证。详细了解 FedCM 自动重新身份验证。
Chrome 110(2023 年 2 月)
- 对于身份断言端点,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 月)
- 文档中的“顶级清单”现已更名为“知名文件”。 无需进行任何实现更改。
- 文档中的“IdP 清单”现已更名为“配置文件”。无需进行任何实现更改。
- “配置文件”中的
id_token_endpoint
已重命名为id_assertion_endpoint
。 - 现在,发送给 IdP 的请求包含
Sec-Fetch-Dest: webidentity
标头,而不是Sec-FedCM-CSRF: ?1
标头。
Chrome 105(2022 年 8 月)
- 向文档添加了重要安全信息。身份提供程序 (IdP) 需要检查
Referer
标头是否与 RP 在ID 令牌端点上预先注册的来源一致。 - 顶级清单已从
/.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 的内容安全政策不再需要允许使用 SVG 图片。
Chrome 103(2022 年 5 月)
- 支持桌面环境。
- 支持桌面设备上的每个 RP 设置。
- 客户端元数据端点现在是可选的。在此端点中,隐私权政策网址也是可选项。
- 在文档中添加了关于使用 CSP
connect-src
的警告。