CAS单点登录,URL多出个参数jsessionid致使登录失败问题

目录:html

1.定位问题web

2.问题产生的缘由浏览器

3.解决问题tomcat

 

一 定位问题cookie

  首先,以下图所示:输入到地址栏的地址被302重定向到单点登陆地址,地址由Response Headers中的参数Location所指定,勾选Preserve log,保存跳转以前的请求轨迹。session

  接下来,以下图所示:浏览器访问带 ?service=*** 的单点登陆地址来请求登陆页,在返回的Response Headers中有参数Set-Cookie,在本地cookie中设置了CASTGC,设置了cookie的有效时间。问题就出在了这个地方,若是浏览器本地禁止了写cookie操做,那么set-cookie并不会成功;那么会话的jsessionid信息会经过url重写的方式,传送到CAS 服务端,来保持通话。url

 

二 问题产生的缘由spa

  经过Preserve log对上一步提交流程的跟踪发现,定位到问题产生的缘由在于:客户端禁用cookie的状况下重写URL。重写URL是用封号将jsessionid紧跟在请求地址以后,在访问参数以前的动做。3d

  对于客户端禁用cookie,除了重写URL,还有表单隐藏字段的方法来传递sessionid。code

三 解决问题

  在web.xml中添加以下配置文件:

<session-config>
  <tracking-mode>COOKIE</tracking-mode>
</session-config>

 四 问题补充

  内存cookie和硬盘cookie:内存cookie没有expires属性,关闭浏览器后再从新打开页面,就会丢失。硬盘cookie设置了expires属性,此时cookie将保存到硬盘上。

  如何禁用URL重写,参考:https://fralef.me/tomcat-disable-jsessionid-in-url.html

相关文章
相关标签/搜索