为弃用第三方 Cookie 做好准备

本指南可帮助您了解 Chrome 停止对第三方 Cookie 的支持而给插件带来的影响和必要更改。

概览

Chrome 于 2024 年 1 月 4 日推出了跟踪保护功能,默认情况下,网站只有 1% 的用户才能访问第三方 Cookie。在 2024 年下半年,Chrome 预计将完全停用第三方 Cookie

Google 课堂插件中至少有以下两种用户体验历程会受到影响:

  1. Google 单点登录 (SSO) 流程
  2. 让用户打开新的标签页

Google 单点登录

在 Google 单点登录流程中,系统会引导用户前往一个对话框,供其登录 Google 账号并同意数据共享。

在 iframe 内直观呈现单点登录期间的三种不同的 Cookie 上下文

图 1. 在 iframe 内直观呈现单点登录期间的三种不同 Cookie 上下文:(1) 顶级 Google 课堂应用;(2) 第三方嵌入式 iframe(在本例中为 localhost 上的 DavidPuzzle)和 (3) 顶级 OAuth 对话框。

在典型的插件实现中,系统会在此登录流程完成时设置会话 Cookie。嵌入式上下文中的插件 iframe 现已使用会话 Cookie 重新加载,以便用户访问经过身份验证的会话。但是,停用第三方 Cookie 后,嵌入式上下文(例如插件 iframe)中的网站将无法从其各自的顶级上下文中访问 Cookie。对于 Google 课堂插件,用户将无法访问经过身份验证的会话,并陷入登录循环。

对于在嵌入式 iframe 上下文中设置会话 Cookie 的实现,可以通过 CHIPS API 缓解此问题,该 API 允许嵌入式网站设置和访问分区 Cookie(嵌入器和嵌入式网域均有键的 Cookie)。但是,在登录对话框的顶级上下文中设置会话 Cookie 的实现无法访问 iframe 中未分区的 Cookie,因而无法登录。

新的标签

出于类似原因,如果用户在插件 iframe 中进行基于 Cookie 的身份验证会话,并且 iframe 启动用户进入某个活动的新顶级标签页,则顶级标签页无法从 iframe 访问分区会话 Cookie。这样可以防止 iframe 会话状态持续存在“新标签页”活动,并且可能会强制用户在新标签页中重新登录。 CHIPS API 无法从设计上解决此问题;无法在顶级上下文中访问分区 iframe Cookie。

开发者操作

在 Chrome 逐步淘汰第三方 Cookie 时,您应考虑采取一些措施,确保您的插件继续按预期运行。

  1. 审核您插件的关键用户历程中的第三方 Cookie 使用情况。更具体地说,可以在停用第三方 Cookie 的情况下进行测试,以评估对您的特定实现的影响。
  2. 探索 Storage Access API。对于所有插件实现,我们建议您探索 Storage Access API (SAA)。SAA 使 iframe 能够在 iframe 上下文之外访问其 Cookie。SAA 目前在 Chrome 中可用,并且受 Google 课堂应用支持。

  3. 选择加入 FedCM。此外,如果您使用 GIS(“使用 Google 帐号登录”库),则 Identity 团队提供的官方指导是选择加入 FedCM。这不会取代第三方 Cookie 功能,但最终在第三方 Cookie 弃用的过程中,GIS 中需要用到该功能。FedCM 目前可在 Chrome 中使用,且 Google 课堂也支持 FedCM,但其行为和功能仍处于开发中,并欢迎大家提供反馈。

  4. 迁移到地理信息系统 (GIS)。如果您使用的是已废弃的 GSIv2 库(也称为 Google 登录库),强烈建议您迁移到 GIS,因为今后对 GSIv2 的支持尚不明确。

  5. 申请延迟试用弃用。Chrome 将提供弃用试用,以允许非广告用例推迟第三方 Cookie 弃用的影响。如果申请被接受,您将获得一个令牌,您可以在插件中使用该令牌,在 2024 年之前始终为您的源启用第三方 Cookie,同时迁移到 SAA 等长期解决方案。申请后,系统会要求您提供 bug ID 或损坏报告链接。我们的团队已为 Google 课堂插件提交此问题,您可以提供此 bug