一种可实现能保护隐私的身份联合的 Web API。
什么是 FedCM?
FedCM(联合凭据管理)是一种可保护隐私的方法,可用于联合身份服务(例如“使用...登录”),且不依赖第三方 Cookie 或导航重定向。
实现状态
- Chrome Platform Status
- FedCM shipped in Chrome 108.
- The FedCM proposal is open for public discussion.
- FedCM isn't supported in other browsers yet.
- Mozilla is implementing a prototype for Firefox and Apple has expressed general support and interest in working together on the FedCM proposal.
今后,我们计划根据从身份提供方 (IdP)、依赖方 (RP) 和浏览器供应商收到的反馈,推出一系列新功能。虽然我们希望身份提供方采用 FedCM,但请注意,FedCM 仍处于积极开发阶段。
为了最大限度地减少部署向后不兼容的更改带来的挑战,我们向身份提供方提出了以下两点建议:
- 订阅我们的简报,我们会在 API 不断演变时向您发送最新动态。
- 在 FedCM API 不断完善的过程中,我们建议 IdP 使用 JavaScript SDK 分发 FedCM API,并建议 RP 不要自行托管 SDK。这将确保 IdP 能够随着 API 的演变进行更改,而无需要求所有依赖方重新部署。
为什么需要 FedCM?
在过去十年中,与每个网站的用户名和密码相比,身份联合在提高 Web 上身份验证标准方面发挥了核心作用,在可信性、易用性(例如无密码单点登录)和安全性(例如更好地抵御钓鱼式攻击和撞库攻击)方面都取得了长足进步。
借助身份联合,RP(依赖方)依赖 IdP(身份提供方)为用户提供账号,而无需用户输入新的用户名和密码。
遗憾的是,身份联合依赖的机制(iframe、重定向和 Cookie)正被积极滥用来跟踪网络上的用户。由于用户代理无法区分身份联合和跟踪,因此针对各种类型的滥用行为采取的缓解措施会使身份联合的部署变得更加困难。
Federated Credential Management API (FedCM) 通过公开一个由浏览器中介的对话框,让用户可以从 IdP 中选择账号来登录网站,从而为 Web 上的联合身份流程提供特定于用例的抽象。
FedCM 是一项多步骤计划,旨在改进 Web 身份验证。在第一步中,我们将重点放在降低第三方 Cookie 限制对联合身份的影响(如需了解后续几步,请参阅“路线图”部分)。
预计哪些方面会受到影响?
通过社区努力和研究,我们了解到,有一些身份联合相关集成会受到第三方 Cookie 限制的影响:
FedCM 的首要目标是降低第三方 Cookie 限制对身份联合的影响,以下是预计会受到影响的方面。如果有未列出的其他用例,您可以参与并分享反馈。
将 FedCM 用作其他 API 的信任信号
除了处理联合身份之外,FedCM 还可作为其他 Privacy Sandbox API 的信任信号。
从 Chrome 131 开始,Storage Access API (SAA) 使用 FedCM 作为信任信号。对于同时依赖 FedCM 进行身份验证和 SAA 来启用跨源 iframe 访问必要存储空间的网站,此集成非常有用。
当用户使用 FedCM 进行身份验证时,如果 RP 选择启用,则在 RP 网站上嵌入的 IdP 内容可以调用 requestStorageAccess()
方法,以自动获取对其自身顶级 Cookie 的存储访问权限,而无需额外向用户显示提示。只有在用户使用 FedCM 登录且 FedCM 登录状态处于有效状态时,系统才会自动授予此权限。如需了解详情,请参阅 Storage Access API 文档。
谁应使用 FedCM?
只有在同时满足以下所有条件的情况下,FedCM 才会对您有所帮助:
- 您是身份提供方 (IdP)。
- 您受到第三方 Cookie 限制的影响。
- 您的 RP 是第三方网站。如果您的 RP 是具有实质关联的网站,相关网站集可能更适合您。
您是 IdP
FedCM 需要身份提供方的支持。依赖方无法独立使用 FedCM。如果您是 RP,可以要求您的 IdP 提供相关说明。
您受到第三方 Cookie 限制的影响
只有当您当前的集成受到第三方 Cookie 限制影响时,才应使用 FedCM。
如果您不确定在无法使用第三方 Cookie 时身份联合是否仍会正常运行,可以通过在 Chrome 中屏蔽第三方 Cookie,在网站上测试其影响。
如果在没有第三方 Cookie 的情况下,您的身份联合不会受到任何可检测到的影响,您可以继续使用当前的集成,而无需 FedCM。
如果您不确定要检查什么,请详细了解限制使用第三方 Cookie 可能会影响的已知功能。
您的 RP 是第三方
如果您是身份提供方,并且 RP 与 IdP 之间存在第一方关系,我们认为相关网站集可能更适合。相关网站集 (RWS) 是一种组织声明网站之间关系的方式,以便浏览器允许出于特定目的进行有限的第三方 Cookie 访问。这样,即使第三方 Cookie 受到其他限制,也能在一组有意义关联的网站之间发挥作用。
用户将如何与 FedCM 互动?
FedCM 的主要目标是降低第三方 Cookie 限制的影响。用户可以在 Chrome 的用户设置中启用或停用 FedCM。
FedCM 设计为与协议无关,并提供以下与身份验证相关的功能。
查看我们的演示,了解其运作方式。
登录信赖方
FedCM 有两种界面模式:
被动模式。在被动模式下,无需用户互动,FedCM 提示就会显示。当用户进入依赖方 (RP) 网站时,在调用 navigator.credentials.get()
且用户已登录 IdP 时,系统可能会显示 FedCM 登录对话框
活动模式。在活动模式下,需要用户互动(例如点击按钮)才能触发 FedCM 提示。
如果用户在 RP 上没有与 IdP 关联的账号,系统会显示一个注册对话框,其中包含额外的披露文本,例如 RP 的服务条款和隐私权政策(如果有)。
用户可以点按继续以...身份完成登录。如果成功,浏览器会存储用户已在 RP 上使用 IdP 创建联合账号这一事实。
RP 应在不支持 FedCM 的浏览器上运行。用户应该能够在这些浏览器上使用现有的非 FedCM 登录流程。详细了解 FedCM 中的登录方式。
用于启用或停用 FedCM 的设置
用户可以在被动模式下启用或停用 FedCM。这不会影响活跃模式,因为登录请求是由用户手势发起的,并且浏览器应协助用户完成登录流程。
桌面设备
用户可以在 chrome://settings/content/federatedIdentityApi
中为桌面版 Chrome 启用或停用 FedCM。
Android
如需在 Android 版 Chrome 上启用或停用 FedCM,用户可以依次前往 Chrome 的设置 > 网站设置 > 第三方登录,然后更改切换开关。
提示冷却期
如果用户手动关闭界面,系统会暂时将一条条目添加到设置界面,并且该界面在一段时间内不会再显示在同一网站中。该界面将在该时段过后重新启用,但如果连续关闭,时长将呈指数级扩大。例如,在 Chrome 中:
连续关闭次数 | FedCM 提示被抑制的时段 |
---|---|
1 | 两小时 |
2 | 一天 |
3 | 一周 |
4+ | 4 周 |
其他浏览器可能会定义自己的冷却时间段。
用户可以前往设置页面或点击 PageInfo 界面(网址栏旁边的锁形图标)并重置权限,以便在 RP 上手动重新启用 FedCM。
路线图
我们正在努力对 FedCM 进行一些更改。如需了解详情,请参阅更新。
- 更新日志:Federated Credential Management API 更新。
我们知道仍有几项工作需要完成,包括我们从 IdP、RP 和浏览器供应商那里了解到的问题。我们认为自己知道如何解决这些问题:
- 跨源 iframe 支持:IdP 可以从跨源 iframe 中调用 FedCM(更新)。
- 个性化按钮:IdP 可以在 IdP 拥有的跨源 iframe 中,在登录按钮上显示回访用户的身份(更新)。
- 指标端点:向 IdP 提供效果指标。
此外,我们还在积极探索一些未解决的问题,包括我们正在评估或原型设计的具体方案:
- CORS:我们正在与 Apple 和 Mozilla 讨论,以确保改进 FedCM 提取的规范。
- Multiple-IdP API:我们正在探索支持多个 IdP 在 FedCM 账号选择器中协同共存的方法。
- IdP 登录状态 API:Mozilla 发现了一个时间攻击问题,我们正在探索 IdP 主动通知浏览器用户的登录状态的方法来缓解此问题。(更新)
- 登录 IdP API:为了支持各种场景,当用户未登录 IdP 时,浏览器会提供一个界面,供用户在不离开 RP 的情况下进行登录。
最后,根据 Mozilla、Apple 和 TAG 审核员的反馈,我们认为仍有工作要做。我们正在努力评估以下悬而未决问题的最佳解决方案:
- 改进用户理解度和匹配意图:正如 Mozilla 所指出的那样,我们希望继续探索不同的用户体验表述和显示区域,以及触发条件。
- 身份属性和选择性披露:正如我们的 TAG 审核员所指出,我们希望提供一种机制,以便选择性地分享更多或更少的身份属性(例如电子邮件地址、年龄段、电话号码等)。
- 提高隐私保护属性:正如 Mozilla 在其标准立场中所建议的那样,我们希望继续探索可提供更好隐私保护保证的机制,例如 IdP 盲目性、定向标识符。
- 与 WebAuthn 的关系:我们非常高兴看到 Apple 建议的通行密钥取得了进展,并将致力于在 FedCM、密码、WebAuthn 和 WebOTP 之间提供一致且协调的体验。
- 登录状态:正如 Apple 在隐私权 CG 的登录状态 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 开发者支持代码库中提问和参与讨论。
遵守电子隐私权法
无论是作为 IdP 还是 RP 使用 FedCM,都涉及在用户的终端设备上存储信息或访问其中已存储的信息,因此,此类活动须遵守欧洲经济区 (EEA) 和英国的电子隐私权法,通常需要征得用户同意。您有责任确定使用 FedCM 是否绝对必要,以提供用户明确请求的在线服务,从而免除征求用户同意的要求。如需了解详情,我们建议您阅读 Privacy Sandbox 与隐私权相关的合规性常见问题解答。