在 FedCM 中支持自动重新验证

Chrome 支持在 FedCM 中自动重新进行身份验证

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

FedCM 让浏览器能够了解 RP 和 IdP 所处的情境 交换信息。它会将相关信息和权限告知用户 共享级别并防止意外滥用行为。FedCM 已在 Chrome 版本 108 及更高版本。

在 Chrome 115 中,FedCM 开始支持自动重新身份验证, 改善用户体验,并简化向 RP 重新进行身份验证的流程 。

自动重新验证

目前,在用户在使用 IdP 的 RP 上创建联合账号之后 通过 FedCM API 配置,那么下一次他们 请访问所需网站,并在界面中执行相同的步骤。 这意味着,用户将需要手动进行明确地重新确认, 重新验证身份并继续登录流程。

尽管在用户创建 联合账号来阻止跟踪(这是 FedCM 的主要目标之一)、 在用户浏览过一次之后,这会带来不必要的麻烦: 用户授予允许 RP 与 IdP 之间的通信的权限; 强制授予其他明确用户权限并不会在隐私或安全方面带来任何好处 对之前已确认的内容进行确认。 因此,我们推出了更精简的用户体验,RP 可以选择 回访用户

FedCM 自动重新验证 (简称“auto-reauthn”)可让用户在 会在通过 FedCM 完成初始身份验证后返回。“最初的 身份验证”这是指用户创建账号或登录 RP 的 网站,方法是点按 FedCM 登录对话框中的“以...的身份登录...”按钮 我们第一次在同一个浏览器实例上使用它们

<ph type="x-smartling-placeholder">
</ph> 用户点按以创建账号或进行身份验证的对话框。
用户为创建账号或进行身份验证而点按的对话框。

选择自动重新验证选项

我们即将推出自动重新验证功能,以便提供更好的用户体验,并与 默认用户体验在没有代码的情况下会有所不同 更改。启用自动重新验证功能后,浏览器会根据 针对您在开发者提供的mediation选项中选择的选项 navigator.credentials.get()

const cred = await navigator.credentials.get({
  identity: {
    providers: [{
      configURL: "https://idp.example/fedcm.json",
      clientId: "1234",
    }],
  },
  mediation: 'optional', // this is the default
});

mediation凭据管理 API, 其行为方式 用途 PasswordCredentialFederatedCredential 目前,Google Cloud PublicKeyCredential 。该属性接受以下四个值:

  • 'required':始终需要中介才能继续操作,例如,点击 “继续”按钮。如果您的用户需要 每次需要进行身份验证时都明确授予权限。
  • 'optional'(默认):如果可能自动重新验证,则需要中介。周三 建议您在登录页面上选择此选项。
  • 'silent':如果可能,会自动重新验证,且无需验证 中介。我们建议在除 但您希望让用户保持登录状态, 例如,货运网站上的商品页面或新闻上的文章页面 网站。
  • 'conditional':用于 WebAuthn,目前不适用于 FedCM。

此调用会在以下情况下自动重新验证:

  • FedCM 可供使用。例如,用户没有停用 FedCM 全局或设置中针对 RP。
  • 用户仅使用一个具有 FedCM API 的账号登录此 。
  • 用户已使用该账号登录 IdP。
  • 过去 10 分钟内未发生自动重新验证。
  • RP 尚未拨打电话 之后价格为 navigator.credentials.preventSilentAccess() 再次登录即可。

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

<ph type="x-smartling-placeholder">
</ph>
用户通过 FedCM 自动重新身份验证。

通过 preventSilentAccess() 强制执行中介

在用户退出登录后立即自动重新进行身份验证不会导致 提供出色的用户体验因此,FedCM 会有 10 分钟的平静期 并防止出现此类行为也就是说 每 10 分钟最多发送一次,除非用户在 10 分钟。RP 应调用 navigator.credentials.preventSilentAccess() 以 明确请求浏览器在用户退出账号时停用自动重新验证功能 明确禁止 RP,例如点击退出按钮。

function signout() {
  navigator.credentials.preventSilentAccess();
  location.href = '/signout';
}

用户可以在设置中选择停用自动重新验证

用户可以在“设置”菜单中选择停用自动重新验证功能:

  • 在桌面版 Chrome 中,前往 chrome://password-manager/settings >登录 。
  • 在 Android 版 Chrome 中,打开设置 >密码管理工具 >点按某个 右上角的齿轮图标 >自动登录。

通过停用切换开关,用户可以选择停用所有自动重新验证行为 。此设置会在设备间存储和同步(如果用户 在 Chrome 实例上登录了 Google 账号, 。

分享反馈

如果您在测试 FedCM,欢迎分享您的反馈或您遇到的任何问题 crbug.com 上位于 Blink>Identity>FedCM 组件下。

照片由 Noah Samuel Franz 拍摄,由 Unspin 提供