FedCM 更新:桌面设备上的 Multi IdP API、Android 源试用版 Chrome 的 Button Mode API 和接续包

Natalia Markoborodova
Natalia Markoborodova

从 Chrome 128 开始,Multi-IdP API 将在桌面设备上开始源试用,Button Mode APIContinuation 软件包将开始在桌面设备上的源试用。借助多 IdP 功能,开发者可以在单个 get() 调用中指定由多个受支持的身份提供方组成的数组。Button Mode API 添加了一个新的界面。借助 Button Mode API,身份提供方可以使用 FedCM API,即使用户在进行 API 调用时没有有效的 IdP 会话也是如此。接续包由 Continuation API 和 Parameters API 组成,它们提供了类似于 OAuth 授权流程的体验,涉及 IdP 提供的权限对话框。该软件包还包含其他更改,例如 fields API、多个 configURL 和自定义账号标签。

源试用:Multi IdP API

借助此功能,用户可以从一组受支持的 IdP 中选择一个账号,而 RP 可因更高的登录和注册率而受益。如果用户使用多个 IdP 登录,系统会提示他们使用其中一个 IdP 登录 RP。

用户正在使用多 IdP API 通过不同的 IdP 登录。

系统会根据用户的现有账号及其关联的时间戳来确定 IdP 的优先级。

  • 如果用户之前已使用特定 IdP(即,他们拥有“回访账号”)登录 RP,则系统会首先列出这些 IdP。
  • 在回访账号中,系统会按 IdP 最近使用的时间戳进一步排序,最近使用过的 IdP 会显示在列表顶部。在某些情况下,Chrome 可能没有回访账号的时间戳数据。这可能是因为用户在 FedCM 中实现时间戳日志之前登录。这些账号列在具有时间戳的账号下方。
  • 如果用户没有任何与任何 IdP 关联的回访账号,系统会遵循 RP 提供的账号顺序。

FedCM 在开发者要求自动重新验证,且账号只有一个退货账号的情况下允许重新验证身份。在多 IdP 的情况下,如果有多个 IdP 存在回访账号,系统将不会自动重新对用户进行身份验证。自动重新身份验证是一项强制性要求,要求有回访账号。浏览器只有在明确识别出账号的情况下才会启动自动重新身份验证。这意味着,用户之前必须已经通过此特定账号在此 RP 中使用过 FedCM。

如果用户针对某个 IdP 将登录状态设为“已退出”,则调用 FedCM 不会提取该 IdP 的账号。同样,如果用户的状态为已退出所有可用 IdP,那么在微件模式下不会自动显示 FedCM 登录提示。

如果已登录浏览器中针对 IdP 保存的登录状态,但提取请求未返回此 IdP 的账号(例如,如果用户会话已过期,但浏览器尚未更新登录状态),则 IdP 会显示不匹配的界面,建议用户使用不匹配的 IdP 登录。

如果用户已登录,但会话已过期,系统会显示不匹配的界面。

如需详细了解登录状态,请参阅文档。如需了解更多实现详情,请参阅开发者指南

源试用:Multi IdP API

您可以以演示版 RP 或 Chrome 128 或更高版本的开发者身份来试用 Multi IdP API。

以用户身份试用

请以用户的身份亲自试用一下。请确保:

  • Chrome 未配置为屏蔽以下网页上的第三方登录提示:chrome://settings/content/federatedIdentityApi
  • 您已登录多个演示 IdP。按照演示页面上的说明操作。

请注意,如需在来源未注册源试用的网站上试用多 IdP,您需要在 chrome://flags/#fedcm-multi-idp 下启用功能标志。

以开发者身份试用

如果登录提供方在 RP 中嵌入了 JavaScript SDK(推荐),则该提供商可以实现用于启用多个 IdP 的 navigator.credentials.get() 调用,并且 RP 开发者无需更改其代码。否则,RP 需要自行调用 FedCM API。

如需在 RP 上测试多个 IdP,请按如下方式指定一组受支持的提供商:

try {
  const cred = await navigator.credentials.get({
    identity: {
      providers: [
        {
          configUrl: "https://idp1.example/foo.json", // first IdP
          clientId: "123",
        },
        {
          configUrl: "https://idp2.example/bar.json", // second IdP
          clientId: "456",
        }
      ]
    }
  });

  const token = cred.token;
  const currentConfigFileUrl = cred.configURL;

  if (cred.configURL === 'https://idp1.example/foo.json')  {
    // handle the token for idp1.example
  } else if (cred.configURL === 'https://idp2.example/bar.json') {
    // handle the token for idp2.example
  }
} catch (error) {
  console.error("Error during credential retrieval:", error);
}

所生成对象中的 configURL 属性会存储用户用于进行身份验证的 IdP 的配置文件网址。RP 可以决定如何处理生成的 token,因为处理方式因 IdP 而异。

参与源试用

通过源试用,您可以试用新功能,并就其易用性、实用性和有效性提供反馈。如需了解详情,请参阅开始试用

从 Chrome 128 开始,您可以注册参与源试用,以试用多 IdP 功能。

如需试用多 IdP,RP 可以注册其源并运行第一方源试用。此外,IdP 还可以注册参加第三方源试用,这样使用 JavaScript SDK 的所有 RP 都可以使用多 IdP 功能。

参与源试用的步骤:

  1. 前往 Multi IdP API 源试用注册页面
  2. 点击 Register(注册)按钮,然后填写申请令牌的表单。
  3. 若要注册参与第一方源试用,请在“Web 源”中输入 RP 的来源字段。对于第三方源试用,请输入 IdP 的 JavaScript SDK 的来源,并勾选“第三方匹配”方框。
  4. 点击提交
  5. 在 RP 页面上提供已颁发的令牌:
    • 对于第一方源试用参与者:
      • 作为 <head> 中的元标记:<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
      • 作为 HTTP 标头:Origin-Trial: TOKEN_GOES_HERE
    • 对于第三方源试用参与者:
      • 以编程方式提供令牌。

Android 上适用于 Chrome 的 Button Mode API

从 Chrome 128 版开始,Button Mode API 的源试用将继在桌面设备上的首次试用后,在 Android 版 Chrome 上开始。借助 Button Mode API,身份提供方可以使用 FedCM API,即使用户在 API 调用时退出 IdP 也是如此。登录流程由用户手势启动,这能更好地反映用户的意图。

Chrome 128 中引入了一项新功能,可让 IdP 直接在客户端元数据端点响应中添加 RP 的官方徽标图标。这增强了处于按钮模式的移动设备上的界面。

与配置文件中 IdP 品牌类似,RP 的图标可以在 IdP 端配置,并在 client_metadata_endpoint 响应中返回,如下所示:

  "privacy_policy_url": "https://rp.example/privacy_policy.html",
  "terms_of_service_url": "https://rp.example/terms_of_service.html",
  "icons": [{
      "url": "https://idp.example/rp-icon.ico",
      "size": 40
   }]
<ph type="x-smartling-placeholder">
</ph> IdP 和 RP 的徽标图标。
移动设备上的披露声明界面中的 IdP 和 RP 徽标图标。

如需详细了解图标支持,请参阅开发者文档

如果用户尚未登录,FedCM 会提示用户使用 IdP 通过 Chrome 自定义标签 (CCT) 提供的 login_url 登录 IdP。

用户在移动设备上通过按钮模式登录。

如果用户使用回访账号重新进行身份验证,则不会显示披露界面。

用户使用回访的账号登录。系统不会显示披露界面。

如需注册参与源试用,请参阅桌面版 Button Mode API 的相关说明。如果您已在桌面设备上注册源试用,那么从 Chrome 128 开始,Android 版 Chrome 将自动为您提供此功能。

Android 版 Chrome 的 Continuation API 软件包

从 Chrome 128 版开始,Android 版 Chrome 的 Continuation API 软件包将作为源试用的一部分(在桌面设备上的首次试用结束)后提供。该包中包含多项 FedCM 功能,包括 Continuation APIParameters APIFields API多个 config网址自定义账号标签

Continuation API 支持多步骤登录流程。Parameters API 允许将其他参数传递给 IdP。借助 Fields API,RP 可以在 FedCM 对话框中请求特定的账号属性,以用于披露界面。此外,多个 configURL 支持一个 IdP 的多个配置文件,自定义账号标签允许 IdP 为账号添加注释,以便 RP 可以按这些标签对其进行过滤。

如需详细了解 Continuation API 软件包,请参阅有关桌面设备上的 Continuation API 软件包的博文。如需报名参加源试用,请按照这些说明操作。如果您已在桌面设备上报名参加源试用,那么自 Chrome 128 起,Android 版 Chrome 将自动为您提供这些功能。

互动和分享反馈

如果您有反馈意见或遇到任何问题,可以提交问题。我们会及时更新规范的 FedCM 开发者指南,以及汇总的更新日志页面