【Web技术】FedCM和后第三方Cookie时代OAuth流的影响
第三方Cookie已经成为用户跟踪和隐私问题的代名词。2021年,谷歌提出了一项计划,将第三方cookie从基于铬的浏览器中退役,并推出FedCM API。在本博客中,我们将讨论这一变化,以及它对传统OAuth流意味着什么。
目录
- 介绍
- 什么是第三方cookie
- 对OAuth协议的影响
- FedCM简介
- 支持FedCM:身份提供商如何适应
- 结论
介绍
联合身份一直是身份验证领域的游戏规则改变者。凭借更高的安全性、更顺畅的登录和更大的转换,它已成为应用程序最受欢迎的身份验证选择。尽管有几种方法可以启用联合身份,但OAuth协议已成为最受欢迎的协议。2022年,谷歌为保护人们的在线隐私而创建的隐私沙盒团队发布了一份公告,宣布发布和测试新的以隐私为重点的API,最终目标是到2024年从Chrome中退役第三方cookie。他们为什么这么做?如何访问不同域的cookie?这对OAuth有何影响?在这个博客中,我们将探讨这些问题以及更多内容。
【IAM】被阻止的第三方Cookie如何可能影响Okta环境
概述
广告商经常使用第三方cookie来跟踪多个网站上的用户行为,从而建立用户在线活动的详细档案。这引起了人们对隐私的严重担忧,因为许多用户对未经其明确同意而不断被监控和分析的想法感到不舒服。阻止第三方cookie是防止此类跟踪的一种方式。
从13.1版本开始,Safari默认会阻止第三方cookie,从而中断某些流中的Okta功能。Firefox和其他浏览器也在推出类似的更改。
谷歌Chrome计划在2024年第一季度为1%的用户禁用第三方cookie,然后在2024第三季度增加到100%的用户。点击此处阅读更多关于谷歌计划的信息:取消Chrome用户的第三方cookie。
应用于
第三方Cookie
原因
如果您使用Okta-hosted登录页面,并且您的应用程序未从浏览器调用会话API,则此问题不会影响您的组织。拥有自己登录功能的客户可能会受到影响。
【Web技术】如何处理浏览器中的第三方cookie阻止
许多浏览器会阻止第三方cookie,即对浏览器地址栏中显示的域以外的域的请求。这些cookie也称为跨域cookie。此块打破了隐式流,需要新的身份验证模式才能成功登录用户。在Microsoft身份平台中,我们使用带有代码交换验证密钥【Proof Key for Code Exchange】(PKCE)的授权流和刷新令牌,以在第三方cookie被阻止时保持用户登录。
什么是智能跟踪保护(ITP)和隐私沙盒?
Apple Safari有一个默认的隐私保护功能,称为智能跟踪保护(ITP)。Chrome有一个名为“隐私沙盒”的浏览器隐私倡议。这些举措涵盖了浏览器的许多不同的浏览器隐私努力,并具有不同的时间表。这两项工作都会阻止跨域请求的“第三方”cookie,Safari和Brave默认会阻止第三方cookie。Chrome最近宣布,他们将开始默认屏蔽第三方cookie。隐私沙盒包括对分区存储的更改以及第三方cookie阻止。
一种常见的用户跟踪方式是在后台将iframe加载到第三方网站,并使用cookie在互联网上关联用户。不幸的是,这种模式也是在单页应用程序(SPA)中实现隐式流的标准方式。阻止第三方cookie以保护用户隐私的浏览器也可以阻止SPA的功能。
【Web技术】在父窗口和子iframe之间发送数据-PostMessage API
Post Message API的替代方案
Channel Messaging API是PostMessage API的一个非常好的替代方案,具有某些优势,如速度和易用性。因此,如果您想跨上下文传输大型JavaScript对象,您可能需要考虑使用Channel Messaging API。如果你想看的话,我有一篇很好的文章和一个演示。
将数据从一个上下文发送到另一个上下文
使用JavaScript,您可以在上下文(即主窗口)之间向iframe传递数据,反之亦然。如果您的主窗口打开了一个新选项卡,您可以将数据从主窗口发送到新选项卡,即使用postMessage()和Channel Messaging API进行跨窗口通信和数据传输。在这篇文章中,我们将只讨论postMessage API。
让我们现实一点——一些上下文之间交流的例子和所有可能的上下文列表
1.从父窗口向子iframe发送数据:
让我们看看如何将一些数据从父窗口发送到子iframe。
【Web技术】CHIPS(具有独立分区状态的Cookie)
【Web技术】存储访问策略:阻止跟踪器的cookie
Firefox包含一个新的存储访问策略,可以阻止来自第三方跟踪资源的cookie和其他网站数据。此策略被设计为旧cookie策略的替代方案,旧cookie策略在Firefox中已经存在多年。此策略可防止跨站点跟踪,同时最大限度地减少与传统cookie阻止相关的站点破坏。本文介绍了该策略的工作原理以及如何对其进行测试。
在Firefox中测试
此cookie策略自63版起在Firefox中可用。本文档描述了我们打算向Firefox Release用户提供的策略,但可能与当前版本的Firefox中实现的策略不匹配。这是因为一旦政策的新方面登陆我们的预发布频道Firefox Nightly,我们就会记录下来。Firefox Nightly也可能包含我们尚未计划向Release用户提供的实验功能;实验特性将不包括在本文档中,但可能会影响分类为跟踪器的域的功能。
我们建议网站使用Firefox Nightly进行测试,因为这包括我们最新版本的保护。如上所述,请注意,Nightly可能包括额外的保护措施,这些保护措施最终会在我们的发布用户收到之前被删除或更改。随着我们加强保护,我们将不断更新此页面的最新信息。
【Web技术】状态分区
状态分区是Mozilla的一项广泛努力,旨在重新设计Firefox管理客户端状态(即存储在浏览器中的数据)的方式,以减少网站滥用状态进行跨站点跟踪的能力,即通过third-party cookies.。
这项工作旨在通过为用户访问的每个网站提供分区存储位置来实现这一点。本文概述了该机制,列出了受影响的API,并解释了如何调试受影响的站点。
默认情况下,状态分区当前在Firefox Nightly频道中处于打开状态。自85版本以来,Firefox的发布通道默认启用了状态分区工作的一个子集(即网络分区)。
【Web技术】具有独立分区状态的Cookie(CHIPS)
实验:这是一项实验技术
在生产中使用之前,请仔细检查浏览器兼容性表。
具有独立分区状态的cookie(CHIPS,也称为分区cookie)允许开发人员将cookie选择到分区存储中,每个顶级网站都有一个单独的cookie罐。
在没有cookie分区的情况下,第三方cookie可以使服务跟踪用户,并在不相关的顶级网站上关联他们的信息。标记为Partitioned的Cookie是双重键控的:通过设置它们的原点和顶级页面的原点。
这意味着它们只能在设置的顶级站点的上下文中读取。这允许阻止跨站点跟踪,同时仍然允许合法使用第三方cookie,如在不同站点之间保持嵌入式地图或聊天小部件的状态,以及保持子资源CDN负载平衡和无头CMS提供商的配置信息。
CHIPS是如何工作的?
为了理解CHIPS是如何工作的,让我们看一个简单的例子。从历史上看,当网站通过<iframe>嵌入内容时,嵌入的内容能够在用户的设备上设置cookie以响应跨网站请求。如果用户访问了嵌入相同内容的其他网站,则嵌入内容可以访问由嵌入内容的第一个实例最初设置的相同cookie。这使内容所有者能够跟踪这些网站以及嵌入相同内容的任何其他网站的用户活动。
【Web技术】网络隐私
人们使用网站执行一些重要任务,如银行、购物、娱乐和纳税。在这样做的过程中,他们被要求与这些网站共享个人信息。用户对与其共享数据的网站有一定程度的信任。如果这些信息落入坏人之手,它可能会被用来剥削用户,例如对他们进行剖析,用不需要的广告针对他们,甚至窃取他们的身份或金钱。
现代浏览器已经拥有丰富的功能来保护用户在网络上的隐私,但这还不够。为了创造一个值得信赖和尊重隐私的体验,开发者需要教育他们的网站用户良好的做法(并强制执行)。开发人员还应该创建网站,尽可能少地从用户那里收集数据,负责任地使用数据,并安全地传输和存储数据。
在本文中,我们:
- 定义隐私和重要的相关术语。
- 检查自动保护用户隐私的浏览器功能。
- 看看开发人员可以做些什么来创建尊重隐私的网络内容,最大限度地降低用户的个人信息/数据被第三方意外获取的风险。
定义隐私条款和概念
在我们研究网络上可用的各种隐私和安全功能之前,让我们定义一些重要的术语。
【Web技术】围栏框架API
实验:这是一项实验技术
在生产中使用之前,请仔细检查浏览器兼容性表。
fencedframe API提供了用于控制<fencedframe>元素中嵌入的内容的功能。
概念和用法
网络上隐私和安全问题的一个主要来源是嵌入<iframe>元素中的内容。历史上,<iframe>被用于设置第三方cookie,该cookie可用于跨站点共享信息和跟踪用户。此外,<iframe>中嵌入的内容可以与其嵌入文档进行通信(例如,使用Window.postMessage())。
嵌入文档还可以使用脚本从<iframe>中读取各种形式的信息——例如,从src属性中读取嵌入的URL可能会获得重要的跟踪/指纹数据,尤其是当它包含URL参数时。<iframe>还可以访问嵌入上下文的DOM,反之亦然。
大多数现代浏览器都在研究对存储进行分区的机制,这样cookie数据就不能再用于跟踪(例如,请参阅cookie具有独立分区状态(CHIPS)或Firefox状态分区)。