zoukankan      html  css  js  c++  java
  • CAS单点登陆,URL多出个参数jsessionid导致登陆失败问题

    目录:

    1.定位问题

    2.问题产生的原因

    3.解决问题

    一 定位问题

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

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

     

    二 问题产生的原因

      通过Preserve log对上一步提交流程的跟踪发现,定位到问题产生的原因在于:客户端禁用cookie的情况下重写URL。重写URL是用封号将jsessionid紧跟在请求地址之后,在访问参数之前的动作。

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

    三 解决问题

      在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

  • 相关阅读:
    HDU1171(01背包均分问题)
    HDU2159(完全背包)
    HDU1203(01背包变形)
    DAG上的DP
    ADB命令小结
    HDU3065(AC自动机入门题)
    HDU2896(AC自动机入门题)
    性能测试监控分析(13)-sysstat安装升级
    tomcat(9)-linux apache tomcat集群环境搭建
    nginx(4)-负载均衡的5种策略及原理
  • 原文地址:https://www.cnblogs.com/RunForLove/p/6381821.html
Copyright © 2011-2022 走看看