http 切换https session丢失 springsecurity

http 切换https session丢失 springsecurity

ID:11905027

大小:151.52 KB

页数:4页

时间:2018-07-14

http 切换https session丢失 springsecurity_第1页
http 切换https session丢失 springsecurity_第2页
http 切换https session丢失 springsecurity_第3页
http 切换https session丢失 springsecurity_第4页
资源描述:

《http 切换https session丢失 springsecurity》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、框架版本:Springsecurity版本:spring-security-3.1.4.RELEASETomcat版本:apache-tomcat-6.0.37浏览器:均支持Http/1.0

2、1.1场景描述:在使用springsecurity安全验证框架的时候会遇到类似的下列的情况:登录页面使用户首次登录也是服务器端首次授权的地方,需要使用HTTPS形式进行加密传输,由于考虑性能的问题其余资源(例如页面)均使用HTTP访问.问题:在使用SpringSecurity配置两种方式自动切换,但是在切换的时候会碰到当你登录成

3、功之后却不能进入主页,从中可能至少有3个sessionId,也就是说SessionId丢失了.一.分析登录页面HTTP切换到HTTPS:说明:请见下图:由上图整个从chrome浏览器调试中查看的整个登录请求过程图,可以看见整个请求过程当中从第二次重写URL之后sessionId一直是第一次分配的,切换到https之后并没有重新创建session,那么session在登录的时候又怎么会丢失咧?二.分析登录整个请求过程:❶提交登录表单到服务器❷服务器返回302登录成功跳转到主页问题2.1此处sessionId为何登录成功

4、却改变了??大家有发现这里的sessionId改变了,就会问,为啥登录成功了却session改变了,这是由于SpringSecurity提供的SessionFixationProtectionStrategy,防止会话固定攻击策略,简单描述一下:就是在用户登录成功之后重新创建一个session,并将登录前匿名会话强制失效,SpringSecurity默认即可防止会话固定攻击关于SpringSecurity如何放置会话固定攻击详细请见:http://www.cnblogs.com/makemelaugh/archive

5、/2013/05/12/3074486.html问题2.2此处的Cookie值为何结尾处有”Secure”,为何平常请求中没有此字段?如果cookie结尾有字符Secure代表此Cookie只能在HTTPS连接中被浏览器传递到服务器端进行会话验证,如果是HTTP连接则不会传递该信息❸登录成功,请求主页(注意:此处是HTTP形式请求)问题:3.1此处为何丢失了session?由于登录时使用的是https的连接,返回重定向客户端指令302时是以https形式返回,cookie中结尾中带有Secure字符,代表只能是在HT

6、TPS连接时将Cookie发送至服务器端做会话验证,但是由于重定向到主页时是以HTTP(http://192.168.2.116/security/)去请求,所以客户端请求主页的时候不会将登录成功后返回的Cookie从Http连接中传递到服务端做会话验证,那么此时服务器就会重新创建会话,然后跳转到登录页面重新登录❹由于服务器未能收到Cookie值,所以不能判断此用户是登录的,便重新创建Session并返回302跳转到Http形式的登录页此时URL是重写的形式的.❺请求Http形式的登录页面.❻服务器响应302跳转到H

7、TTPS形式登录页,此时的sessionId是重写的上一次请求的.❼请求HTTPS登录首页.❽返回HTTPS登录首页三.解决方案描述:问题就出在Https提交登录信息之后,登录成功了,返回了Cookie,但是Cookie的结尾处标识了Secure,只能是HTTPS的连接才能将此Cookie发送到服务器,但是重定向的却是HTTP形式的主页,所以没能将Cookie信息发送至服务器,导致登录成功,却不能跳转到首页,如果我们在登录成功后自己实现重写URL在URL结尾处添加jsessionId就能解决此问题.3.1编写一个Ja

8、va类如下所示:packageorg.hc.security;importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.http.Cookie;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.commons.logging.Log;importorg

9、.apache.commons.logging.LogFactory;importorg.hc.controller.LogIOController;importorg.springframework.security.core.Authentication;importorg.springframework.security.web.auth

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。