CAS单点登陆,URL多出个参数jsessionid导致登陆失败问题
2024-08-25 14:35:22
目录:
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。
最新文章
- System.Dynamic.ExpandoObject 类型的简单使用
- 禁止盗链,强制回登录页面web.config配置
- 在repeart中获取行数据
- 阿里云nat mysql配置
- Remoting的入门教程
- [国嵌攻略][148][MTD系统架构]
- VLAN 模式下的 OpenStack 管理 vSphere 集群方案
- day9(Hash、字典)
- Spring Boot 集成Swagger
- 【CSA35G】【XSY3318】Counting Quests DP 拉格朗日反演 NTT
- MySql+EF <;二>;
- DDD 学习记录
- 自学python 1.
- GCC编译器原理(一)04------GCC 工具:nlmconv、nm、objcopy、objdump和 ranlib
- Hibernate 补充 ManyToOne、OneToMany、OneToOne的使用例
- 理解 Python 的执行方式,与字节码 bytecode 玩耍 (上)
- C. A Mist of Florescence
- Web Deploy远程部署配置图解
- SQL Server占用服务器内存过高
- cookie 常用的几种方法