FedCM:可保护隐私的身份联合 API

本页介绍了 FedCM 的优势哪些人应考虑实现 FedCM 以及用户如何与 FedCM 互动

Federated Credential Management (FedCM) 是一种以隐私保护为中心且用户友好的联合身份服务(例如使用身份提供方账号登录)方法,不依赖于第三方 Cookie 或导航重定向。

借助 FedCM,用户可以通过新的方式在网站上使用第三方身份提供商进行身份验证。

什么是身份联合

身份联合会将个人(用户或实体)的身份验证或授权委托给受信任的外部身份提供方 (IdP)。然后,IdP 允许个人登录到信赖方网站 (RP)。借助身份联合,RP 依赖于 IdP 为用户提供账号,而无需用户提供新的用户名和密码。

借助联合身份解决方案,用户不必为每个 RP 创建另一组凭据。这有助于改善用户体验、降低遭受钓鱼式攻击的几率,并帮助 RP 从可信的身份提供方获取经过验证的用户信息。

传统解决方案和第三方 Cookie

传统的身份联合机制依赖于 iframe、重定向或第三方 Cookie,这会引发隐私权方面的担忧。这些解决方案可能会被用于在整个网络中跟踪用户,而浏览器无法区分合法的身份服务和不必要的监视。

考虑到隐私权问题,主流浏览器正在限制使用第三方 Cookie。这可能会影响某些功能。通过社区的努力和我们的研究,我们了解到,有少数与身份联合相关的集成会受到第三方 Cookie 限制的影响。

使用 FedCM 进行身份联合

FedCM 与协议无关:它可以作为独立解决方案实现,也可以作为不同协议可以利用的额外层实现。例如,一个可正常运行的 OAuth 服务器可以通过实现 FedCM 端点,然后将 FedCM 响应中返回的授权代码换取 OAuth 访问令牌,来受益于 FedCM 的浏览器中介的一键式登录体验和直观的界面。

为什么需要 FedCM?

与传统解决方案相比,它为 Web 生态系统带来了多重优势,在设计时充分考虑了用户、RP 和 IdP 开发者的需求。

支持无需第三方 Cookie 的身份解决方案

FedCM 有助于减少对第三方 Cookie 的依赖,第三方 Cookie 通常用于在整个网络中跟踪用户。即使在第三方 Cookie 不可用的情况下(例如在无痕模式下),该 API 也能提供个性化的登录体验。

FedCM 还与其他 Privacy Sandbox API 集成。例如,Storage Access API 使用 FedCM 身份验证作为信任信号。对于同时依赖 FedCM 进行身份验证和 SAA 来允许跨源 iframe 访问必要存储空间的网站,此集成非常有用。

改善用户体验

FedCM 引入了由浏览器介导的界面对话框,可简化一键式登录流程。该 API 还解决了登录页面杂乱的问题,有时也称为 NASCAR 问题

NASCAR 问题的示例:一个网站的界面因选择了七种不同的登录选项而显得杂乱无章。
NASCAR 问题的示例:由于 IdP 选择过宽而导致界面杂乱的网站。

FedCM 不会提供大量令人眼花缭乱的社交登录按钮,而是提供更简单易用的界面

安全

借助联合身份方法,用户可以使用由 IdP 管理的可信账号。采用此方法后,用户无需向每个网站添加凭据。这样可以减少钓鱼式攻击的攻击面。此外,RP 可以依靠专门从事安全身份管理的 IdP 的专业知识,而无需自行实施强大的安全措施。

FedCM 旨在让联合身份流程对用户而言更加便捷,鼓励用户优先选择这种流程,而不是安全性较低的身份流程。

为更多用户提供个性化体验

FedCM 可减少账号注册流程中的用户体验摩擦。Google Identity Service 的案例研究表明,与多步登录选项相比,用户更喜欢使用 FedCM 的“一键登录”流程创建账号。

借助 FedCM,更多 IdP 可以为用户提供一键式登录体验。随着越来越多的 IdP 提供一键式身份验证流程,用户可以在 RP 上从更多 IdP 中进行选择。FedCM 通过向用户显示最相关的账号,提供了一种改进的 IdP 选择机制。

注册率越高,RP 就能为更多用户提供个性化体验。

支持多种身份提供方

FedCM 的简化界面旨在向用户显示个性化的相关 IdP 列表。借助 FedCM 的 IdP 选择机制,RP 对 IdP 的选择不再受 IdP 用户群规模的限制。例如,部分用户可能只拥有 small-idp.example 的账号,而没有 bigger-idp.example 的账号。

借助多 IdP 功能,rp.example 可以同时支持 small-idp.examplebigger-idp.example,而不会使界面显得杂乱无章。这有利于所有相关方:

  • 用户可以选择自己喜欢的 IdP,无论其规模大小。
  • RP 通过支持各种 IdP 来覆盖更多用户
  • 用户群较小的 IdP 可在更多 RP 上使用。

哪些人应该使用 FedCM?

我们预计,只有在满足以下条件时,FedCM 才会对您有用:

  • 您是具有第三方 RP 的身份提供方 (IdP)。
  • 您有自己的身份解决方案,并且有多个网域依赖于该解决方案。
  • 您希望即使在用户选择不使用第三方 Cookie 来浏览网页的情况下,也能支持联合身份流程。

您是 IdP

FedCM 需要身份提供方的支持。信赖方无法单独使用 FedCM。如果您是 RP,可以向 IdP 索取相关说明。

多个 RP

如果您的 RP 是第三方,或者您有超过四个 RP 使用您的身份解决方案,建议使用 FedCM API 来实现联合身份验证。

您希望支持无 Cookie 身份联合流程

即使对于不使用第三方 Cookie 的用户,FedCM 也支持基本的联合身份流程。借助 FedCM,用户仍然可以在 RP 上使用其联合账号进行注册、登录和退出。

此外,FedCM 还可作为 Storage Access API 的信任信号,从而消除 IdP 发起的存储访问请求的摩擦。

用户与 FedCM 的互动

FedCM 旨在成为与身份验证协议无关的协议,并为用户提供一种新流程,以便使用第三方 IdP 向 RP 进行身份验证。通过我们的演示试用 FedCM。

登录信赖方

用户可以从 RP 支持的一组 IdP 中选择一个账号。如果用户通过多个 IdP 登录,系统会提示用户使用其中一个 IdP 登录 RP。

系统会按以下顺序显示用户的账号:

  • 系统会先显示用户设备上访问过的账号,最近访问过的账号会排在最前面。
  • 接下来,系统会显示用户在 RP 上根据 IdP 访问过的账号。有关哪些账号已被访问的信息是从 approved_clients account endpoint 属性值中提取的。
  • 之前未在 RP 上使用过的账号会显示在最后。

如果任何这些优先级层级中存在多个账号,则这些账号会根据 RP 在 get() 调用中提供的 IdP 顺序进一步排序。

FedCM 界面模式

FedCM 有两种界面模式:被动主动

被动模式。在被动模式下,FedCM 提示无需用户互动即可显示。当用户进入信赖方 (RP) 网站时,如果满足以下条件,则在调用 navigator.credentials.get() 时会显示 FedCM 登录对话框:

  • 用户已登录至少一个受支持的 IdP。如果用户在所有可用的 IdP 中都处于已退出登录状态,系统不会自动显示 FedCM 登录提示。
  • 用户的浏览器中未设置 FedCM 冷静期设置
  • 用户未在浏览器设置中停用 FedCM。 详细了解用户如何选择不使用 FedCM。
用户以被动模式依次通过不同的 IdP 进行身份验证:先通过一个 IdP 登录和退出,然后再通过下一个 IdP 进行身份验证。

主动模式。在主动模式下,需要临时用户激活(例如点击使用…账号登录按钮)才能触发 FedCM 提示。

用户在主动模式下使用 FedCM 登录 RP。

用户只需点按以用户身份继续即可完成登录。如果成功,浏览器会存储用户已在 RP 上使用 IdP 创建联合账号这一事实。

如果用户在 IdP 上没有 RP 账号,系统会显示注册对话框,其中包含其他披露文本,例如 RP 的服务条款和隐私权政策。

遵守 ePrivacy 法规

使用 FedCM(无论是作为 IdP 还是 RP)涉及在用户终端设备上存储信息或访问已存储在其中的信息,因此属于欧洲经济区 (EEA) 和英国的 ePrivacy 法规所约束的活动,通常需要征得用户同意。您有责任确定您对 FedCM 的使用是否严格必要,才能提供用户明确要求的在线服务,因此是否可以免于征得用户同意。

Vision

我们正在积极开发新功能,以解决当前存在的限制并提供更好的用户体验。

  • 我们正在探索更安静的用户体验方案,以确保为用户提供顺畅、直观且干扰性较小的身份验证流程。
  • 我们致力于加强用户隐私保护。我们计划过渡到以委托为导向的下一代 FedCM 模型,以缓解 IdP 跟踪问题。借助 NextGen,用户可以在 RP 上登录,而无需 IdP 跟踪用户。
  • FedCM 旨在根据 RP 的选择,向用户提供更广泛的 IdP 选择。为此,我们正在开发 Multi-IdP 和 IdP 注册 API。
  • 我们正积极致力于将 FedCM 与其他身份验证方法(例如通行密钥)以及自动填充等其他方式相集成,以打造统一的身份验证体验。

如需了解详情,请参阅我们的路线图