FedCM 更新:针对自动重新进行身份验证的源试用

我们对 FedCM 进行了一些更新,包括推出了用于自动重新身份验证的新源试用。

Federated Credential Management API (FedCM) 是一个 Web API,可实现可保护隐私的身份联合。借助身份联合,RP(依赖方)依赖 IdP(身份提供方)为用户提供账号,而无需用户输入新的用户名和密码。

FedCM 是一个专用 API,可让浏览器了解 RP 和 IdP 交换信息的上下文,告知用户共享的信息和权限级别,并防止意外滥用。

更新

Chrome 的 FedCM 实现进行了一些更新:

如需了解该 API 的所有过往更新,请参阅 Federated Credential Management API 更新

最新版 FedCM 包含一项新的自动重新身份验证功能,可在用户使用 FedCM 进行初始身份验证后再次访问时自动重新对其进行身份验证。从 Chrome 112 开始,自动重新身份验证可作为来源试用。

自动重新验证

目前,用户通过 FedCM 在 RP 上使用 IdP 创建联合账号后,下次访问该网站时,需要在界面中完成相同的步骤。也就是说,他们需要明确确认并重新进行身份验证,才能继续完成登录流程。由于 FedCM 的一个主要目标是防止隐秘跟踪,因此在用户创建联邦账号之前,此用户体验 (UX) 很有意义,但在用户完成一次此流程后,此体验就变得多余且繁琐。在用户授予允许 RP 与 IdP 之间进行通信的权限后,如果再强制要求用户针对之前已确认的内容再次明确确认,对隐私或安全没有任何好处。因此,Chrome 推出了更简洁的用户体验,让 RP 可以为其回访用户选择。

FedCM 自动重新身份验证(简称“auto-reauthn”)会在用户使用 FedCM 进行初始身份验证后再次访问时自动重新验证用户身份(如果 RP 选择启用此功能)。这里的“初始身份验证”是指用户在同一浏览器实例中首次点按 FedCM 登录对话框中的“Continue as...” 按钮,创建账号或登录 RP 的网站。

用户点按此对话框即可创建账号或进行身份验证。
用户点按以创建账号或进行身份验证的对话框。

RP 可以使用 autoReauthn: true 调用 navigator.credentials.get() 来请求自动重新授权。

const cred = await navigator.credentials.get({
  identity: {
    providers: [{
      configURL: "https://idp.example/fedcm.json",
      clientId: "1234",
    }],
    // NOTE: We are exploring different API options to expose this
    // functionality here:
    // https://github.com/fedidcg/FedCM/issues/429#issuecomment-1426358523
    // You should expect that, as a result of the origin trial, we'll
    // learn more from developers and browser vendors what works best here.
    autoReauthn: true, // default to false
  },
});

在以下情况下,系统会自动重新进行身份验证:

  • FedCM 可供使用。例如,用户尚未在全球范围内或针对 RP 停用 FedCM。
  • 用户仅使用一个 FedCM 账号在此浏览器中登录了该网站。
  • 用户已使用该账号登录 IdP。
  • 自动重新授权未在过去 10 分钟内发生。

满足上述条件后,系统会在调用 FedCM navigator.credentials.get() 后立即尝试自动重新对用户进行身份验证。

用户正在使用 FedCM 向 RP 自动重新进行身份验证

试试看

您可以在 Chrome 112 或更高版本中开启 Chrome 标志 chrome://flags#fedcm-auto-re-authn,在本地试用 FedCM 自动重新身份验证。

出于测试目的,您可以通过移除浏览器数据来重置 10 分钟的安静期。

  1. 导航到 chrome://history
  2. 在搜索记录框中,输入 RP 的来源。
  3. 点击三点状图标 ⋮,然后选择从历史记录中移除
  4. 重启 Chrome。

参与源试用

您还可以加入 第三方来源试用计划(适用于 Chrome 112 到 Chrome 114),在您的网站上启用该功能。

通过源试用,您可以试用新功能,并向 Web 标准社区提供有关其易用性、实用性和有效性的反馈。如需了解详情,请参阅面向 Web 开发者的源试用指南。如需注册本次或其他源试用,请访问注册页面

为了注册第三方来源 试用并启用该功能 对第三方的要求:

  1. 前往源试用注册页面
  2. 点击 Register 按钮,然后填写申请令牌的表单
  3. 输入服务来源作为网络来源
  4. 选中第三方匹配,以便在其他源上通过 JavaScript 注入令牌。
  5. 点击提交
  6. 将颁发的令牌嵌入第三方。

要将令牌嵌入第三方,请将以下代码添加到 JavaScript 中 库或 SDK。

const tokenElement = document.createElement('meta');
tokenElement.httpEquiv = 'origin-trial';
tokenElement.content = 'TOKEN_GOES_HERE';
document.head.appendChild(tokenElement);

TOKEN_GOES_HERE 替换为您自己的令牌。

互动和分享反馈

如果您有任何反馈或在测试过程中遇到任何问题,可以在 crbug.com 上在 Blink> Identity> FedCM 组件下分享这些反馈和问题。

照片由 Alex Perz 拍摄,选自 Unsplash