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

Java 如何在Tomcat上将JSESSIONID域设置为第二级?,java,tomcat,cookies,jsessionid,Java,Tomcat,Cookies,Jsessionid,我在Tomcat上提供以下域的服务: sub1.domain1.com sub2.domain1.com sub1.domain2.com sub2.domain2.com 现在我需要域1的透明授权(Spring安全性)。如果用户登录到sub1.domain1.com,他也将获得sub2.domain1.com的授权 这可以通过Tomcat的设置来完成 sessionCookieDomain=".domain1.com" 但是现在sub1.domain2.com上的授权根本不起作用,因为所

我在Tomcat上提供以下域的服务:

sub1.domain1.com
sub2.domain1.com

sub1.domain2.com
sub2.domain2.com
现在我需要域1的透明授权(Spring安全性)。如果用户登录到sub1.domain1.com,他也将获得sub2.domain1.com的授权

这可以通过Tomcat的设置来完成

sessionCookieDomain=".domain1.com"
但是现在sub1.domain2.com上的授权根本不起作用,因为所有JSSessionID cookie域始终设置为“.domain1.com”


我怎样才能让tomcat只使用当前域的第二级来进行cookies呢?

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

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

有关更多详细信息,请参阅的答案



如果我以某种方式重载cookie创建,并在需要的地方设置.domain1.com和.domain2.com,该怎么办


如果
foo.domain1.com
尝试设置路径为
.domain2.com
anything.domain2.com
的cookie,出于安全原因,浏览器将忽略该cookie。要在两个域上设置cookie,您必须经历一个复杂的重定向舞蹈。有关更多详细信息,请阅读我链接到的问题/答案。

可能的重复-此问题的答案描述了需要使用的(相当复杂的)机制,并列出一些现有的SSO技术来完成这项工作。如果我以某种方式重载cookie创建,并在需要的地方设置.domain1.com和.domain2.com,该怎么办?我不需要对所有域进行透明授权。域1中的用户无法转到域2。但是我需要分别跨所有domain1子域和所有domain2子域进行SSO。@Andrey-听起来您只需要在每个webapp的context.xml中设置不同的
sessionCookieDomain
属性。问题是只有一个webapp,但它使用不同的域。它是一种多租户(SAAS)应用程序。