了解跨多个域的JSessionId

时间:2011-06-22 01:16:51

标签: java jsessionid

我正在尝试理解JSessionId的唯一性和范围,因为它涉及多个未备份的域。

我已阅读Under what conditions is a JSESSIONID created?,但仍有一些问题 -

具体做法是:

如果用户访问www.app1.com,并且该应用调用www.app2.com来加载数据,则会创建两个jsessionId - 每个域一个?

同样,当呼叫转到www.app2.com时,是否有来自www.app1.com的jsessionid的任何信息?

重定向会对此产生什么影响? (例如,请求http://app1.com/login.jsp重定向到http://app2.com/login.jsp

2 个答案:

答案 0 :(得分:2)

  

如果用户访问www.app1.com,该应用会拨打电话   www.app2.com加载数据,是两个jsessionId创建 - 每个一个   域?

是。更准确地说,每个单独的WebApp都会为其域发布自己的cookie。因此,如果映射了不同的Web应用程序,www.app1.com / 1和www.app1.com/2将具有不同的cookie。

  

同样,当电话转到www.app2.com时,是否有任何信息   关于来自www.app1.com的jsessionid传递了吗?

不,但请阅读有关为什么保护您的应用程序的原因很好的XSS和CSRF,因为注入将cookie传递到另一个URL的脚本并不困难。

  

重定向会对此产生什么影响? (例如,请求   http://app1.com/login.jsp重定向到http://app2.com/login.jsp

无论如何。如果您恰好已经登录到两者,您可能会在之后登录。注销一个不会影响另一个。 (如果您想要真正的单一/单点注销,两个应用必须信任第三方,如CAS服务器或Kerberos服务器。)

答案 1 :(得分:1)

JSESSIONID是会话Cookie。此Cookie设置了domain,因此在您的情况下,您将拥有2个Cookie,这两个Cookie在JSESSIONID属性中都有domain个不同的路径。