如果不接受 cookie,配置 WildFly/Undertow 以将 JSESSIONID 放在 URL 上
Posted
技术标签:
【中文标题】如果不接受 cookie,配置 WildFly/Undertow 以将 JSESSIONID 放在 URL 上【英文标题】:Configure WildFly/Undertow to put JSESSIONID on URL if cookies not accepted 【发布时间】:2015-02-14 12:50:43 【问题描述】:我们之前使用 JBoss 7.1.2 并利用 JSESSIONID 放在 URL 上的行为作为不接受 cookie 或请求中不存在 JSESSIONID cookie 时的后备。
迁移到 WildFly 8.2.0 / Undertow 1.1.0 后,此 URL 重写不会发生。
是否可以配置 WildFly/Undertow 以将 JSESSIONID 放在 URL 上作为后备?我们知道将 session-config 放入 web.xml
的可能性,例如:
<session-config>
<tracking-mode>URL</tracking-mode>
</session-config>
但我们只希望 URL 上的 JSESSIONID 作为后备解决方案。
【问题讨论】:
【参考方案1】:要使用基于 cookie 的会话跟踪(如果可用)和基于 URL 的会话跟踪作为备用,您应该像这样配置您的部署描述符 web.xml
:
<web-app ...>
<session-config>
<tracking-mode>COOKIE</tracking-mode>
<tracking-mode>URL</tracking-mode>
</session-config>
</web-app>
请注意,您至少需要 servlet 3.0 规范!
不幸的是,Wildfly/Undertow 中有一个 bug (UNDERTOW-396) 阻止使用回退。对于 Undertow 1.2.0-Beta10,该错误已被标记为已修复,但 Wildfly 8.1.0.Final 和 8.2.Final 都使用旧版本。因此,目前您可能需要在 Wildfly 安装中更新 Undertow 才能获得修复。
这是另一个有用的blog-post 关于这个主题。
更新:Wildfly 9.0.2.Final 使用 Undertow 1.2.9,所以这应该可以再次工作(尚未测试)。
【讨论】:
请注意,将 sessionid 放在 URL 中存在一些安全问题。查看 OWASP 前 10 名的建议。查看主题 A2 和会话固定。以上是关于如果不接受 cookie,配置 WildFly/Undertow 以将 JSESSIONID 放在 URL 上的主要内容,如果未能解决你的问题,请参考以下文章