2

我在 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?

4

1 回答 1

2

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

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

有关更多详细信息,请参阅跨多个域的单点登录的答案


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

如果foo.domain1.com尝试使用 path.domain2.com或设置 cookie anything.domain2.com,出于安全原因,浏览器将忽略它。您必须经历复杂的重定向舞蹈才能在两个域上设置 cookie。阅读我链接到(上面)的问题/答案以获取更多详细信息。

于 2011-05-26T12:14:41.723 回答