如何在Tomcat上将JSESSIONID域设置为第二级?

时间:2011-05-26 11:30:13

标签: java tomcat cookies jsessionid

我在以下域中提供Tomcat服务:

sub1.domain1.com
sub2.domain1.com

sub1.domain2.com
sub2.domain2.com

现在我需要为domain1提供透明授权(Spring Security)。如果用户登录sub1.domain1.com,他也在sub2.domain1.com上获得授权。

这可以通过Tomcat的设置

来完成
sessionCookieDomain=".domain1.com"

但是现在sub1.domain2.com上的授权根本不起作用,因为所有JSESSIONID cookie域总是设置为“.domain1.com”。

我怎样才能让tomcat只为cookie使用第二级当前域?

1 个答案:

答案 0 :(得分:2)

简单的答案是没有简单的答案。基本上,您需要一个主要登录站点和方案,以便辅助站点可以为其域设置克隆主站点会话令牌的cookie。实现这一点很复杂。

两种可能的SSO技术是Shibboleth和JASIG CAS。

有关详细信息,请参阅Single Sign On across multiple domains

的答案
  

如果我以某种方式超载cookie创建并在必要时设置.domain1.com和.domain2.com怎么办?

如果foo.domain1.com尝试设置包含路径.domain2.comanything.domain2.com的Cookie,则出于安全原因,浏览器会忽略该Cookie。您必须经历复杂的重定向舞蹈才能在两个域上设置Cookie。阅读我链接到(上方)的问题/答案以获取更多详细信息。