历史版本2 :单点登录失败排查思路 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

本文主要讲述单点登录失败的排查步骤,以便于用户可以根据自己的实际情况进行排查。

2. 排查步骤编辑

2.1 单点是否成功

1)前台单点:直接访问前台单点请求看是否成功。

2)后台单点:看请求中是否有Set-Cookie,如果有一般都是正常的

若前台单点或后台单点请求都正常,但是依然单点有问题,可能是环境存在问题,需要排查下环境是否正常。

2.2 浏览器问题

换个浏览器(内核不同)测试下单点效果,如果换个浏览器单点可以了,说明是浏览器的问题。测试单点的时候,最好是清除缓存后再进行操作,避免缓存影响导致判断出现错误。

2.3 工程设置

2.3.1 安全防护

1)如果使用跨域 iframe 的方式嵌入报表,出现无法访问的情况,请关闭 Security Headers 高级设置中的「点击劫持攻击防护」按钮。

2)单点登录时若报跨域的问题,请关闭 Security Headers 高级设置中的「内容嗅探攻击防护」按钮。

2.3.2 用户异常

1)平台用户被禁用

如果平台用户被禁用了,会导致前台单点不能正常登录,但后台单点不受影响。

2)用户名密码错误

系统用户名需与平台用户名保持一致,当密码中如果有特殊字符,需要用 encodeURIComponent() 方法进行转码。

2.3.3 代码问题

1)前台单点需要去检查地址有没有误,包括:

  • https错写成http,反之亦然

  • 工程名webroot未修改成实际的工程名

  • 网络不通(请求被拦截、ip、端口写错,决策平台安全限制等等)

可以直接在浏览器访问单点地址,看下返回值,确认下有没有问题。

2)后台单点,以 cas 单点为例,一般可能出问题的是 web.xml,因为需要修改成实际的地址

  • cas集群:因为集群状态下 session 无法保持,如果在集群环境下使用了单机的cas 方案,可能会导致单点失败。可以根据登录之后的cookie中是否存在 cas_login_ticket 来判断,存在则说明是集群下的 cas 方案,否则是单机。

  • cas登出:cas serve r会发出一个下线请求,工程中 cas 相关的 filter 会拦截判断是不是登出请求,是的话则与 sessionlistener 配合清除会话中的 token 相关信息,对于用本地生成的证书和域名,jdk 是无法解析和信任的,所以请求无法发出,需要将证书导入服务器使用的jdk。

  • 可能是缺少 jar 包,需要检查 jar 包是否完整。

2.3.4 系统限制

需要检查系统设置是否存在限制,例如白名单等。