全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
框架版本:Spring security版本: spring-security-3.1.4.RELEASETomcat 版本: apache-tomcat-6.0.37浏览器 :均支持Http/1.0 | 1.1场景描述: 在使用spring security安全验证框架的时候会遇到类似的下列的情况: 登录页面使用户首次登录也是服务器端首次授权的地方,需要使用HTTPS形式进行加密传输,由于考虑性能的问题其余资源(例如页面)均使用HTTP访问.问题: 在使用Spring Security配置两种方式自动切换,但是在切换的时候会碰到当你登录成功之后却不能进入主页,从中可能至少有3个sessionId,也就是说SessionId丢失了.一.分析登录页面HTTP切换到HTTPS: 说明:请见下图:由上图整个从chrome 浏览器 调试中查看的整个登录请求过程图,可以看见整个请求过程当中从第二次重写URL之后sessionId一直是第一次分配的,切换到https之后并没有重新创建session,那么session在登录的时候又怎么会丢失咧?二.分析登录整个请求过程:提交登录表单到服务器服务器返回302 登录成功跳转到主页 问题2.1此处sessionId为何登录成功却改变了? 大家有发现这里的sessionId改变了,就会问,为啥登录成功了却session改变了,这是由于Spring Security 提供的SessionFixationProtectionStrategy,防止会话固定攻击策略,简单描述一下: 就是在用户登录成功之后重新创建一个session,并将登录前匿名会话强制失效,Spring Security默认即可防止会话固定攻击 关于Spring Security如何放置会话固定攻击详细请见: /makemelaugh/archive/2013/05/12/3074486.html问题2.2 此处的Cookie值为何结尾处有”Secure”,为何平常请求中没有此字段? 如果cookie结尾有字符Secure代表此Cookie只能在HTTPS连接中被浏览器传递到服务器端进行会话验证,如果是HTTP连接则不会传递该信息登录成功,请求主页(注意:此处是HTTP形式请求) 问题:3.1此处为何丢失了session?由于登录时使用的是https的连接,返回重定向客户端指令302时是以https形式返回,cookie中结尾中带有Secure字符,代表只能是在HTTPS连接时将Cookie发送至服务器端做会话验证,但是由于重定向到主页时是以HTTP(16/security/)去请求,所以客户端请求主页的时候不会将登录成功后返回的Cookie从Http连接中传递到服务端做会话验证,那么此时服务器就会重新创建会话,然后跳转到登录页面重新登录由于服务器未能收到Cookie值,所以不能判断此用户是登录的,便重新创建Session并返回302跳转到Http形式的登录页此时URL是重写的形式的.请求Http形式的登录页面.服务器响应302跳转到HTTPS形式登录页,此时的sessionId是重写的上一次请求的.请求HTTPS登录首页.返回HTTPS登录首页三.解决方案描述: 问题就出在Https提交登录信息之后,登录成功了,返回了Cookie ,但是Cookie的结尾处标识了Secure,只能是HTTPS的连接才能将此Cookie发送到服务器,但是重定向的却是HTTP形式的主页,所以没能将Cookie信息发送至服务器,导致登录成功,却不能跳转到首页,如果我们在登录成功后自己实现重写URL在URL结尾处添加jsessionId就能解决此问题.3.1编写一个Java类如下所示:package org.hc.security;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.logging.Log;import mons.logging.LogFactory;import org.hc.controller.LogIOController;import org.springframework.security.core.Authentication;import org.springframework.security.web.authentication.AuthenticationSuccessHandler;/* * 登录认证成功后的处理器 * author YHC */public class LoginAuthenticationSuccessHandler implements AuthenticationSuccessHandlerprivate final Log log=LogFactory.getLog(LoginAuthenticationSuccessHandler.class); Overridepublic void onAuthenticationSuccess(HttpServletRequest request,HttpServletResponse response, Authentication authentication)throws IOException, ServletException log.debug(sessionId:+request.getSession().getId();log.debug(登录认证成功);log.debug(执行跳转到主页. /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47637.1-2026数据中心和电信中心机房安装的信息和通信技术(ICT)设备用直流器具耦合器第1部分:2.6 kW系统
- 应用密码学基础(微课视频版) 教案 李晓峰
- 广西柳州市文华中学 2023-2024学年八年级上学期期末学情自测道德与法治试卷(文字版含答案)
- 绿色低碳晶圆级金刚石半导体材料项目可行性研究报告模板-拿地立项申报
- 3GPP IMS域中CSCF服务器软件仿真:设计、实现与优化探索
- 300米超高层建筑基于性能的抗震设计研究:以具体案例为例
- 2519A铝合金搅拌摩擦焊工艺与性能研究:多维度分析与优化策略
- 2013 - 2015年山东省发热伴血小板减少综合征病原学与流行病学深度剖析
- 循环经济烧碱装置副产氢气综合利用项目可行性研究报告模板拿地申报
- 2026年急救理论知识考试试题(附答案)
- 2026年廉洁从业教育培训测试题及答案
- 2026年吉林省国资委监管企业2026年度第一次集中招聘(613人)考试备考题库及答案详解
- 金融赋能:我国城镇化建设中金融发展与城镇化关系的深度剖析与实证研究
- 二年级孤独的小螃蟹故事
- TSG 08-2026 特种设备使用管理规则
- 标准化生产作业指导书及操作流程模板
- 建筑工程电气施工质量验收规范
- 施工现场每日工作汇报
- 嗜血细胞综合征
- 药品GMP新规与药用辅料包材管理培训课件
- DB32-T 5079-2025 城镇供水水表安装及维护技术规程
评论
0/150
提交评论