1. 概述
1.1 版本
报表服务器版本 | JAR 包版本 | HTTPS_SameSite_跨域插件 |
---|---|---|
10.0 | 2019-01-31 | V3.0 |
1.2 问题描述
谷歌浏览器 80.0 及以上版本、火狐浏览器 96.0 及以上版本,单点登录失败,跳转到登录页,其他浏览器正常。
1.3 原因分析
由于 cookie 问题导致单点失败。
谷歌浏览器 80.0 及以上版本、火狐浏览器 96.0 及以上版本均修改了安全策略,默认 SameSite 策略不允许 cookie 跨站发送,因此单点登录会失败。
1.4 解决思路
谷歌通用解决方案 | 需关闭谷歌浏览器的「SameSite by default cookies」选项,重启浏览器 |
---|---|
http解决方案 | 统一主域名 |
https解决方案 | 需要单点到的工程安装 HTTPS_SameSite_跨域插件,重启工程 |
2. 跨站简介
谷歌浏览器 80.0 及以上版本、火狐浏览器 96.0 及以上版本,不允许 cookie 跨站发送,会导致单点登录失败。
跨站的判断依据:
跨站是用 Public Suffix List 域名后缀列表 来判断的。
两个 URL ,顶级域名和次顶级域名内容(后面用 public suffix+1 指代)相同,为同站:
顶级域名:从 Public Suffix List 域名后缀列表中匹配的最长后缀长度。
次顶级域名:顶级域名前面的字段。
注:顶级域名列表可参见:顶级域名列表
示例:
比如 www.sina.com.cn 的 public suffix+1 是 sina.com.cn,www.sohu.com.cn 的 public suffix+1 是 sohu.com.cn, 两者不一样,所以不属于同一个站点;再比如 nanzhuang.taobao.com 的 public suffix+1 是 taobao.com,nvzhuang.taobao.com 的 public suffix+1 也是 taobao.com,那么它俩就是同一个站点的。
3. 临时解决方案
注1:这一方案同样适用于其他谷歌内核浏览器,如新 edge(访问edge://flags/)、360 安全浏览器(访问se://flags/)等,但不适用于 91 及以上版本的谷歌内核浏览器。
注2:本章提供方案是通过修改谷歌的设置解决的,每台访问的电脑都需要修改谷歌的设置,使用体验差,不太推荐;推荐参考本文第四章方案。
在谷歌浏览器地址栏中输入:chrome://flags/,然后在搜索框输入「SameSite」搜索并找到
「SameSite by default cookies」选项,右侧按钮选择「Disabled」,重启谷歌浏览器即可。如下图所示:
4. http解决方案
http 访问:统一主域名。
谷歌浏览器、火狐浏览器、360极速浏览器均可通过此方案解决。
参见本文第二章跨站说明。保证两个工程的顶级域名、次顶级域名相同,比如 a.b.com 和 c.b.com,「.com」顶级,「b」是次顶级。
举例:bbs.fanruan.com、help.fanruan.com,顶级域名均为 .com,次级域名均为 fanruan,这样的两个工程则不会出现此问题。
5. https解决方案
升级为 https 访问:为需要单点到的工程安装 HTTPS_SameSite_跨域插件,重启工程。
谷歌浏览器、火狐浏览器、360极速浏览器均可通过此方案解决。
5.1 插件下载
插件下载:HTTPS_SameSite_跨域
设计器插件安装方法请参见: 设计器插件管理
服务器安装插件方法请参见: 服务器插件管理
5.2 插件使用
设置跨域单点登录后,需要单点到的工程安装「HTTPS_SameSite_跨域插件」后,重启工程,即可实现跨站单点登录。
6. 注意事项
谷歌最新的 91 版本无法手动关闭 samesite ,samesite 属性全都会默认开启,单点全都会失败,但是「HTTPS_SameSite_跨域插件」正常生效。