用于可保护隐私的身份联合的 Web API。
什么是 FedCM?
FedCM(联合凭据管理)是一种联合身份服务(例如“使用...登录”)的隐私保护方法;借助该方法,用户可以登录网站,而无需与身份服务或网站共享其个人信息。
实现状态
- Chrome 平台状态
- Chrome 108 中已提供 FedCM。
- FedCM 提案可供公开讨论。
- 其他浏览器尚不支持 FedCM。
- Mozilla 正在实现 Firefox 的原型,并且 Apple 已表示对就 FedCM 提案展开合作的普遍支持和兴趣。
今后,我们计划根据从身份提供方 (IdP)、依赖方 (RP) 和浏览器供应商处收到的反馈来引入许多新功能。虽然我们希望身份提供方采用 FedCM,但请注意,FedCM 仍在积极开发中,预计在 2023 年第 4 季度之前会进行不向后兼容的更改。
为了尽量减少部署向后不兼容更改带来的挑战,我们目前针对身份提供方提供两条建议:
- 订阅我们的简报,我们将随 API 的发展情况向您发送最新动态。
- 我们鼓励 IdP 在 FedCM API 成熟的过程中通过 JavaScript SDK 分发该 API,并不建议 RP 使用自托管 SDK。这将确保 IdP 可以随着 API 的发展进行更改,而无需让所有依赖方进行重新部署。
为什么我们需要 FedCM?
过去十年中,与每个网站的用户名和密码相比,身份联合在提高 Web 身份验证的可信度、易用性(例如,无密码单点登录)和安全性(例如,更能抵御钓鱼式攻击和凭据填充攻击)方面发挥了核心作用。
借助身份联合,RP(依赖方)依赖 IdP(身份提供方)为用户提供帐号,而无需新的用户名和密码。
遗憾的是,身份联合所依赖的机制(iframe、重定向和 Cookie)正被积极滥用以跟踪网络中的用户。由于用户代理无法区分身份联合和跟踪,因此针对各种滥用行为类型的缓解措施会使身份联合的部署变得更加困难。
Federated Credential Management API (FedCM) 通过公开一个由浏览器中介的对话框,允许用户从 IdP 选择帐号以登录网站,从而为网络上的联合身份流程提供特定于用例的抽象。
FedCM 涉及多个步骤,旨在改善网络上的身份。在第一步,我们的重点是降低逐步淘汰第三方 Cookie 对联合身份的影响(请参阅“路线图”部分,进一步了解一些步骤)。
我们预计什么会受到影响?
通过社区活动和我们的研究,我们了解到,一些与身份联合相关的集成受到第三方 Cookie 逐步淘汰的影响:
FedCM 的第一个目标是降低逐步淘汰第三方 Cookie 对身份联合的影响,以上是我们预计会受到影响的领域。如果存在我们未列出的任何其他用例,我们建议您参与和分享反馈。
哪些人应该使用 FedCM?
我们希望 FedCM 仅在满足以下所有条件时对您有用:
- 您是身份提供方 (IdP)。
- 您正在受到第三方 Cookie 逐步淘汰的影响。
- 您的 RP 是第三方网站。如果您的 RP 是具有实际意义的相关网站,Related Website Set 可能更适合您。
您是 IdP
FedCM 需要身份提供方的支持。依赖方不能独立使用 FedCM。如果您是 RP,可以要求 IdP 提供说明。
受到第三方 Cookie 逐步淘汰的影响
仅当您当前的集成受到第三方 Cookie 逐步淘汰的影响时,才应使用 FedCM。
如果您不确定 Chrome 逐步淘汰第三方 Cookie 后身份联合是否会继续正常运行,可以通过在 Chrome 上屏蔽第三方 Cookie 来测试对网站的影响。
如果在不使用第三方 Cookie 的情况下,您的身份联合不会受到可发现的影响,您可以在不使用 FedCM 的情况下继续使用当前的集成。
如果您不确定需要检查哪些功能,请详细了解逐步停用功能预计会影响的已知问题。
您的 RP 是第三方
如果您是身份提供方,其 RP 与 IdP 之间存在第一方关系,我们预计 Related Website Set 可能是更好的选择。Related Website Set (RWS) 是组织声明网站关系的一种方式,可让浏览器出于特定目的允许有限的第三方 Cookie 访问。这样一来,即使在逐步淘汰第三方 Cookie 后,第三方 Cookie 也可以在有意义的相关网站集合之间工作。
用户将如何与 FedCM 互动?
目前,FedCM 的主要目标是减轻逐步弃用第三方 Cookie 的影响。用户可以在 Chrome 的用户设置中启用或停用 FedCM。
FedCM 设计为与协议无关,并提供以下与身份验证相关的功能。
查看我们的演示,了解其工作方式。
登录依赖方
当用户到达依赖方 (RP) 网站时,如果用户已登录 IdP,系统会显示 FedCM 登录对话框。
如果用户没有在 RP 上通过 IdP 创建帐号,系统会显示一个注册对话框,其中包含额外的披露文本,例如 RP 的服务条款和隐私权政策(如果有)。
用户可以点按使用以下身份继续...来完成登录。如果成功,浏览器会存储用户已在 RP 上与 IdP 创建联合帐号这一事实。
RP 可以在不支持 FedCM 的浏览器上使用。用户应该能够使用现有的非 FedCM 登录流程。详细了解 FedCM 中的登录机制。
用于启用或停用 FedCM 的设置
用户可以在 Android 版 Chrome 的设置中启用或停用 FedCM。依次转到设置 > 网站设置 > 第三方登录,然后更改切换开关。
![在移动设备上的 Chrome 设置中启用 FedCM(只需开启第三方登录即可)](https://developers.google.cn/static/privacy-sandbox/assets/images/enable-fedcm-chrome-sett-acb36abf28b59.jpg?authuser=8&hl=lv)
他们可以前往 chrome://settings/content/federatedIdentityApi
对桌面版 Chrome 执行相同的操作。
![在桌面设备上的“Chrome 设置”中开启第三方登录,以启用 FedCM](https://developers.google.cn/static/privacy-sandbox/assets/images/enable-fedcm-chrome-sett-ebbf4834f6f21.png?authuser=8&hl=lv)
路线图
我们正在努力对 FedCM 进行一些更改。
我们已根据反馈应用了多项更新。此外,预计在 2023 年第 4 季度之前,它预计会继续发展下去,至少是进入稳定状态。如需了解详情,请参阅“更新”。
- 变更日志:Federated Credential Management API 更新。
我们知道,还有一些事情仍然需要解决,包括我们从 IdP、RP 和浏览器供应商了解到的问题。我们相信自己知道如何解决这些问题:
- 跨源 iframe 支持:IdP 可以从跨源 iframe 中调用 FedCM (update)。
- 个性化按钮:IdP 可以从 IdP 拥有的跨源 iframe(更新)内的登录按钮上显示回访用户的身份。
- 指标端点:向 IdP 提供性能指标。
此外,我们正在积极探索一些未解决的问题,包括我们正在评估或进行原型设计的特定提案:
- CORS:我们正在与 Apple 和 Mozilla 进行讨论,以确保改进 FedCM 提取的规范。
- 多 IdP API:我们正在探索如何支持多个 IdP 在 FedCM 帐号选择器中共存。
- IdP Sign-in status API:Mozilla 已经发现了定时攻击问题,我们正在探索 IdP 如何主动通知浏览器用户登录状态以缓解此问题。(更新)
- 登录 IdP API:为了支持各种场景,如果用户未登录 IdP,浏览器会提供一个界面,让用户无需离开 RP 即可登录。
最后,根据 Mozilla、Apple 和 TAG 审核人员的反馈,我们认为仍有一些事情需要做。 我们正在研究以下待解决的问题的最佳解决方案:
- 提高用户的理解和匹配意图:正如 Mozilla 所指出的,我们希望继续探索不同的用户体验方案和表面领域,以及触发条件。
- 身份属性和选择性披露:正如我们的 TAG 审核者所述,我们希望提供一种机制,让您有选择地分享更多或更少的身份属性(例如电子邮件地址、年龄段、电话号码等)。
- 提高隐私权属性:正如 Mozilla 此处的建议,我们想要继续探索旨在提供更好的隐私保护的机制,例如 IdP 盲人、定向标识符。
- 与 WebAuthn 的关系:正如 Apple 所建议的那样,我们非常高兴看到通行密钥取得的进展,并致力于在 FedCM、Passwords、WebAuthn 和 WebOTP 之间提供一致的体验。
- 登录状态:正如 Apple 通过 Privacy CG 的 Login status API 所建议的那样,我们分享了一个直觉,即用户的登录状态是可以帮助浏览器做出明智决策的实用信息,我们对此感到非常兴奋。(更新)
- 企业和教育机构:正如 FedID CG 所明确,仍有许多用例未能得到 FedCM 的良好满足,我们仍希望继续改进,例如前端渠道退出(IdP 能够向 RP 发送信号以退出登录)和对 SAML 的支持。
- 与 mDL/VC 等的关系:继续努力了解这些模块在 FedCM 中的适用情况,例如借助 Mobile Document Request API 实现。
使用 FedCM API
您需要在 Chrome 中的 IdP 和 RP 上同时提供安全上下文(HTTPS 或 localhost),才能使用 FedCM。
要与 FedCM 集成,您需要为帐号列表、断言发布和可选的客户端元数据创建众所周知的文件、配置文件和端点。然后,FedCM 会公开 JavaScript API,RP 可使用这些 API 通过 IdP 登录。
如需了解如何使用 FedCM API,请参阅 FedCM 开发者指南。
互动和分享反馈
- GitHub:阅读说明、提出问题并关注讨论。
- 开发者支持:在 Privacy Sandbox 开发者支持代码库中提问并加入讨论。
遵守电子隐私法律
将 FedCM 用作 IdP 或 RP,会涉及到存储用户终端设备上的信息或访问已存储在其中的信息,因此,在欧洲经济区 (EEA) 和英国,此类活动通常需要经过用户同意才能使用。您有责任确定使用 FedCM 是否绝对必要,以便提供用户明确要求的在线服务,从而免于遵循用户意见征求要求。如需了解详情,建议您阅读我们的 Privacy Sandbox 与隐私权相关的合规性常见问题解答。