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

Natalia Markoborodova
Natalia Markoborodova

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

来源试用:Multi IdP API

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

用户使用多 IdP API 通过不同的 IdP 进行登录。

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

  • 如果用户之前使用特定 IdP 登录过 RP(即拥有“回访账号”),系统会先列出这些 IdP。
  • 在回访账号中,系统会按 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 上试用 Multi IdP API,也可以作为开发者使用 Chrome 128 或更高版本试用该 API。

以用户身份试用

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

  • Chrome 未配置为屏蔽网页 chrome://settings/content/federatedIdentityApi 上的第三方登录提示。
  • 您已登录多个演示 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. 点击注册按钮,然后填写表单以请求令牌。
  3. 如需注册第一方来源试用,请在“网站来源”字段中输入 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 的按钮模式 API

桌面版试用之后,从 Chrome 128 版开始,Android 版 Chrome 将开始 Button Mode API 的源试用。借助 Button Mode API,身份提供程序即使在用户在 API 调用后从 IdP 中退出登录,也能使用 FedCM API。登录流程由用户手势发起,这更能反映用户的意图。

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
   }]
IdP 和 RP 的徽标图标。
移动设备上披露信息界面中的 IdP 和 RP 徽标图标。

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

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

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

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

用户使用回访账号登录。未显示披露声明界面。

如需注册参加源试用,请参阅桌面设备上的 Button Mode API 的说明。如果您已在桌面设备上注册原始试用版,那么从 Chrome 128 开始,您将可在 Android 设备上自动使用该功能。

Android 版 Chrome 的 Continuation API 软件包

继在桌面设备上进行初始试用后,从 Chrome 128 版开始,Continuation API 软件包将作为源试用计划的一部分提供给 Android 版 Chrome。该软件包包含多个 FedCM 功能,包括 Continuation APIParameters APIFields APIMultiple config网址sCustom Account Labels

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

如需详细了解 Continuation API 软件包,请参阅桌面版 Continuation API 软件包一文。如需注册源代码试用版,请按照这些说明操作。如果您已在桌面设备上注册原始试用版,那么从 Chrome 128 开始,您将可在 Android 设备上自动使用这些功能。

互动和分享反馈

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