



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
框架版本: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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025财务管理代理合同模板
- 2025电子产品采购合同(通讯设备)
- 2025商务英语写作货物进口合同范本
- 杭州买房别墅合同范本
- 途家租赁合同范本
- 2025购销合同示范文本
- 浴室瓷砖租房合同范本
- 煤炭合同范本模板
- 政府文印合同范本
- 出具汇算报告合同范本
- 2025年公文核改竞赛试题及答案
- 有机硅行业面试攻略:高级岗位面试题库
- 2025历年退役军人考试题库及答案
- 第一二单元月考综合试卷(试题)四年级上册数学沪教版
- 2025级新生军训开训仪式动员大会
- 农产品质量安全标准体系与实施路径-洞察及研究
- 专利分级管理办法
- 中组部选调生管理办法
- 克痉方湿热敷:缺血性脑卒中后上肢肌肉痉挛康复新路径
- 血常规检验中的质量控制
- 高尿酸血症健康管理方案
评论
0/150
提交评论