页面树结构
转至元数据结尾
转至元数据起始

正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史

« 前一个 版本 12 下一个 »


问题现象


最近(2020年3月份)有用户反馈,在第三方系统通过iframe的方式集成Smartbi的url,并拼接了登录信息从而实现单点登录,在最新版谷歌浏览器(80版本)中,打开报表有时会跳到Smartbi登录界面(现象如下图所示),通过IE等其他浏览器访问是正常的。


问题分析

1.问题的本质

新版本的chrome浏览器(80版本之后)对cookie的校验更加严格,SameSite属性默认值由None变为Lax,在SameSite属性为Lax的情况下,跨域是不允许传递cookie的,未传递cookie则单点登录失败

详情请见:  https://blog.csdn.net/qq_37788558/article/details/104484888?fps=1&locationNum=2

 

 

 

如果Smartbi 与第三方系统部署在不同的机器上,或者部署在同一机器不同的应用服务器域下,即出现跨域访问,就会导致在第三方系统通过iframe的方式集成Smartbi的资源,单点登录的时候获取不到对应的用户信息。

2.对于相同版本的Chrome有些会有些不会的原因分析

以前的谷歌版本跨域是允许传递cookie的,但最近谷歌的新版本开始会有很多不允许跨域传递cookie的情况,所以开始出现问题。具体从哪个版本开始目前我们也不是很清楚,根据客户的反馈以及我们测试,大多是chrome 版本 80.0.3987.132(正式版本)会有不允许跨域传递cookie的情况。但不是所有人用这个版本都会有问题,谷歌采用灰度测试,即使是同版本,也是部分覆盖,部分不覆盖。且后续谷歌的新版本可能会一直存在不允许跨域传递cookie的情况。

 

解决方法

方案一(推荐):

通过在第三方系统的应用服务器上部署 smartbi_proxy来解决跨域问题,即可解决本问题

跨域问题解决文档:https://history.wiki.smartbi.com.cn/pages/viewpage.action?pageId=35750879

适用情况:第三方系统的域较少。

特点:操作比较简单,风险较小,推荐使用。

方案二(推荐):

通过部署代理(例如Nginx等)来解决跨域问题,即可解决本问题

适用情况:第三方系统的域较多。

特点:操作比较简单,风险较小,推荐使用。

方案三:

由于目前发现部分谷歌浏览器80版本出现了这种问题,建议未升级到新版本的谷歌浏览器尽量不要升级到谷歌80版本,或者使用其他类型的浏览器,比如IE、火狐等。

适用情况:第三方系统没有限制只能在谷歌浏览器上访问。

特点:操作比较简单,但是通用性差,无法控制用户访问的浏览器类型。

 

方案四(不推荐):

另外,从网上一些资料分析,如果应用服务器是tomcat,通过升级tomcat到 8.5以上版本,并且需要保证Smartbi和第三方系统均配置了https协议,可能也可以解决该问题。

适用场景:应用服务器为tomcat, 并且传输协议为https。

特点:通用性差(比如应用服务器非tomcat);高版本tomcat要改较多的配置,比较麻烦,否则参数传递可能会失败;需要部署https证书(多个域需要多个证书),存在未知风险,不推荐使用。

 

Viewtracker License Missing

There is a problem with the license of the Viewtracker addon. Please check if you have a valid license.

授权码细节

 

  • 无标签