Java 使用servlet 3.0的JBoss 6会话安全特性存在问题
我们将应用程序从JBoss5迁移到JBoss6,其中一个主要原因是利用Servlet3.0的新特性。除了JBoss 6和servlet 3.0的一个新特性之外,一切都正常工作:将会话cookie设置为仅通过安全通道传输,即使请求是通过普通HTTP发出的。这对我们来说是一个非常重要的安全特性,通过添加Java 使用servlet 3.0的JBoss 6会话安全特性存在问题,java,security,tomcat,jboss6.x,servlet-3.0,Java,Security,Tomcat,Jboss6.x,Servlet 3.0,我们将应用程序从JBoss5迁移到JBoss6,其中一个主要原因是利用Servlet3.0的新特性。除了JBoss 6和servlet 3.0的一个新特性之外,一切都正常工作:将会话cookie设置为仅通过安全通道传输,即使请求是通过普通HTTP发出的。这对我们来说是一个非常重要的安全特性,通过添加 <secure>true</secure> true 在web.xml中。这是web.xml的一部分: <session-config> <sessio
<secure>true</secure>
true
在web.xml中。这是web.xml的一部分:
<session-config>
<session-timeout>25</session-timeout>
<cookie-config>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
<tracking-mode>COOKIE</tracking-mode>
25
真的
真的
曲奇
当我们移除
<secure>true</secure>
true
一切正常。当它存在时,即使在安全页面(HTTPS)或不安全页面(HTTP)上,也会为每个请求生成一个新的jsessionid。此外,登录不起作用,因为在使用安全凭据登录后,用户被重定向回登录页面
我想这可能也是Tomcat7的一个问题,因为它也使用Servlet3.0规范。任何建议都将不胜感激
根据以下内容考虑:
稳妥
可选。安全属性(不带值)指导用户
代理仅使用(未指定)安全方式联系来源
服务器发送回此cookie时
用户代理(可能在用户的控制下)可以确定
它认为适合“安全”的安全级别
cookies。安全属性应被视为安全属性
从服务器到用户代理的通知,指示它处于
会话对保护cookie内容的兴趣
这意味着该规范允许浏览器(用户代理)定义什么是“安全的”
web.xml
中的Secure
元素是的参考,您可以使用浏览器的调试工具跟踪该值
如果通信不“安全”,浏览器将不会在以下请求中将收到的cookie发送到服务器
问题不在于JBoss总是返回新的cookie,而在于浏览器因为通信不安全而不返回cookie。JBoss然后为每个请求创建一个新会话
很明显,对于非加密通信(非HTTPS),浏览器不会发送cookie,这是预期的,因为您将cookie标记为secure=true
但是,即使您使用的是HTTPS,“安全”也与浏览器的安全概念有关,例如:
- 证书可以过期
- 证书是自签名的
- 您使用的主机名与签署证书的主机名不同
web.xml
配置配置JBoss 6.1.0 Final,一切正常
我建议您仔细检查配置、浏览器调试和警报 恕我直言,但IMHOJBossAS6几乎和5一样有问题。小心点。只需查看状态为
已关闭且无法修复的JIRA票据即可。为什么JBoss AS 7不行?@GrzesiekD感谢您的评论。事实上,我们现在已经迁移到了7。这个问题已经问了将近2年了。是的,你是对的。我在发表评论后注意到了这一点。我是罪过。@Alex:你找到解决办法了吗?如果是这样的话,请作为答案发布,以帮助未来的访问者。@MohammadFaisal我们没有解决这个问题,我们根本没有使用true
功能。在发布后迁移到JBossAS7时。