反馈已提交

网络繁忙

您正在浏览的是 FineBI6.1 帮助文档,点击跳转至: FineBI5.1帮助文档

单点登录常见问题

  • 文档创建者:Wendy123456
  • 历史版本:19
  • 最近更新:Carly 于 2024-11-25
  • 1. 概述

    1.1 版本

    FineBI服务器版本
    6.0

    1.2 应用场景

    本文介绍单点登录中,常见的问题及排查步骤。

    2. 谷歌浏览器单点登录失败

    问题描述:

    谷歌浏览器 80 版本及以上单点登录失败,跳转到登录页,其他浏览器正常。

    原因分析:

    Chrome80.0及以上版本浏览器修改了安全策略,默认 SameSite 策略不允许 cookie 跨站发送,因此单点登录会失败。

    2.1 https解决方案

    2.1.1 非运维平台部署的帆软应用

    对于非运维平台部署的帆软应用,且工程版本为11.0.4及之后,

    若已升级工程为 https,可直接使用产品内置的HTTPS_SameSite_跨域策略,无需任何操作。

    https 设置跨域单点登录后,可直接实现跨站单点登录。

    2.1.2 运维平台部署的帆软应用

    1)下载并解压,获取配置文件CORS.conf:CORS.zip

    2)将CORS.conf上传到帆软应用的/nginx外挂目录/conf/custom目录中。

    • 如不存在该目录,请手动创建,并赋予足够的读写权限

    • 如不清楚外挂目录位置,可通过导出部署信息找回,详情请参见:导出项目部署信息

    3)登录运维平台,选择指定项目,点击「维护>组件管理」,重启nginx组件。

    4)重启解析配置时,会自动加载配置文件CORS.conf,将内容合并到nginx.conf文件的location /  ${APP_PATH}块内,即可实现跨站单点登录。

    2.2 http解决方案

    注:本节方案配置比较复杂,推荐将工程升级为 https 后,再参考本文2.1节优化。

    解决方案一:统一主域名

    参考下方跨站说明,保证两个工程的顶级域名、次顶级域名相同,比如 a.b.com 和 c.b.com,「.com」顶级,「b」是次顶级。
    举例:bbs.fanruan.com、help.fanruan.com,顶级域名均为 .com,次级域名均为 fanruan,这样的两个工程则不会出现此问题。

    跨站说明:

    跨站是用 Public Suffix List 域名后缀列表 来判断的。

    两个 URL ,顶级域名和次顶级域名内容(后面用 public suffix+1 指代)相同,为同站:

    • 顶级域名:从 Public Suffix List 域名后缀列表中匹配的最长后缀长度。

    • 次顶级域名:顶级域名前面的字段。

    注:顶级域名列表可参见:顶级域名列表

    比如 www.sina.com.cn 的 public suffix+1 是 sina.com.cnwww.sohu.com.cn 的 public suffix+1 是 sohu.com.cn, 两者不一样,所以不属于同一个站点。

    再比如 nanzhuang.taobao.com 的 public suffix+1 是 taobao.comnvzhuang.taobao.com 的 public suffix+1 也是 taobao.com,那么它俩就是同一个站点的。

    解决方案二:配置代理

    可通过代理,将帆软和第三方系统配置到同一域名下,第三方系统里面配置的报表链接需要改成走代理的链接。即可绕过samesite。

    2.3 临时解决方案

    该临时方案是通过修改谷歌的设置解决的,每台访问工程的电脑都需要修改谷歌的设置,使用体验差,不太推荐;推荐使用2.1节方案。

    该临时方案适用于所有谷歌内核浏览器,如新 edge(访问edge://flags/)、360 安全浏览器(访问se://flags/)等,但不适用于 91 及以上版本的谷歌内核浏览器。

    在谷歌浏览器地址栏中输入:chrome://flags/,然后在搜索框输入「SameSite」搜索并找到「SameSite by default cookies」选项,右侧按钮选择「Disabled」。

    设置完成后,需要重启谷歌浏览器,方可生效。如下图所示:

    3. IE浏览器单点登录失败

    问题描述:

    用户在 IE 浏览器上单点登录失败,但开启 IE 浏览器的调试模式又可以正常单点登录。

    原因分析:

    单点登录代码中使用console.log()打印 debug 信息,在 IE 浏览器中该代码是默认不执行的,需要在 F12 打开调试工具才有效。

    解决方案:

    把打印日志的代码屏蔽掉即可正常登录。如下图所示:

    4. IE11浏览器单点登录失败

    问题描述:

    iframe 跨域单点登录在 IE11 浏览器上失败。

    解决方案:

    1)由于 IE11 没有 attachEvent 这个属性,需要添加一个 meta 标签来设置浏览器的默认兼容模式,通过在 html 的 head 标签中加入下面代码:

    <meta http-equiv="X-UA-Compatible" content="IE=10" />

     meta 标签用来设置浏览器的默认兼容模式为 IE10,这样就可以依旧使用 attachEvent 属性。

    2)另外 IE11 浏览器需要将报表服务器的地址加入到受信任的站点中,如下图所示:

    比如工程地址为http://172.17.0.20:37799/webroot/decision,配置如下图所示:

    5. Safari浏览器跨域单点登录失败

    问题描述:

    跨域情况下,使用 Safari 浏览器或其他 H5 方式在移动端预览报表时,iOS 设备单点登录失败,Android 设备正常。

    注:请确认移动端登录页面是原生页面还是 H5 页面,如果是原生页面,可直接使用原生的单点登录方式,这个不涉及跨域 。

           如果登录页面也是 H5 的,只能用常规的 JavaScript 单点登录。

    原因分析:

    由于 cookie 问题导致单点失败。

    Safari 浏览器安全级别比较高,跨域情况下,默认不允许第三方 Cookie 写入,或者只允许访问过的网站写入。

    解决方案:

    1)针对客户端浏览器,设置允许 Cookie 写入即可。如下图所示:

    2)针对移动端 App 里的容器(比如 WebView),用户有自己的 App 框架前提下,需要用户自己的研发人员加两行代码,设置成接受 Cookie 即可。如下图所示:

    代码如下所示:

    NSHTTPCookieStorage *cook = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    [cook setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];

    5. 内网环境下单点登录失效

    问题描述:

    内网环境下,单点登录失败。

    原因分析:

    单点登录代码中,若引用了 JS 文件,内网环境下是无法生效的。如下图所示:

    解决方案:

    下载 JS 文件到本地并修改对应的路径即可。以 Ajax 跨域异步单点登录 为例:

    1)访问右侧链接: 各版本 jquery下载 ,下载代码中对应的 jquery 文件。

    2)将所下载文件中的jquery.min.js文件放到%BI_HOME%\webapps\webroot下,如下图所示:

    3)修改 HTML 文件中jquery.min.js文件的路径,如下图所示:

    6. 保持登录状态

    问题描述:

    单点登录不能勾选保持登录状态,有时会在登录一段时间后自动退出。

    原因分析:

    单点登录接口:http://localhost:8080/webroot/decision/login/cross/domain?fine_username=XX&fine_password=XX&validity=-2&callback=

    validity 值:

    • -2:表示保持登录,保持登录就是 14 天的时间。

    • 非-2:非保持登录,时长跟随:「管理系统>系统管理>登录>登录超时时间」

    解决方案:

    如果希望单点登录时保持登录,将参数 validity 的值改为 -2 即可

    如果希望不保持长期登录,可进入数据决策系统,在平台「系统管理>登录」处统一设置「登录超时时间」,如下图所示:


    7. 控制台显示登录成功但平台仍需登录

    问题描述:

    在 IE 浏览器下打开控制台显示单点登录成功,但是访问决策系统时依旧会提示需要登录,如下图所示:


    原因分析:

    IE 隐私等级过高,这样会导致它发送单点登录请求后,平台返回的 cookie 写不进去,而其他浏览器是默许的。

    解决方案:

    将 IE 隐私等级调整到低或以下。

    8. 特殊密码单点登录失败

    问题描述:

    用户密码包含特殊字符,例如hgyusdre+CVsdej+HU09Y6y==,单点登录失效。但如果在登录页输入账号密码,登录成功。

    原因分析:

    当密码存在特殊字符,通过单点登录接口直接访问会失败,需要对密码进行转码。

    解决方案:

    1)打开浏览器控制台,以谷歌浏览器为例,在控制台中输入encodeURIComponent("密码"),可将密码进行转码。如下图所示:


    2)单点登录接口使用转码的密码进行访问。

    附件列表


    主题: 部署集成
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持