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

标签 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?

最佳答案

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

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

有关更多详细信息,请参阅 Single Sign On across multiple domains 的答案


What if I somehow overload cookie creation and set .domain1.com and .domain2.com where required?

如果 foo.domain1.com 尝试使用路径 .domain2.comanything.domain2.com 设置 cookie,浏览器出于安全原因将忽略它。您必须通过复杂的重定向流程才能在两个域上设置 cookie。阅读我链接到(上方)的问题/答案以了解更多详细信息。

关于java - 如何在 Tomcat 上将 JSESSIONID 域设置为二级域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6137760/

相关文章:

java - 独立迭代时,无序 HashMap 中的键和值是否对齐?

java - 无法发布到服务器。无法获取 J2EEFlexProjDeployable 对象

javascript - 使用 Node 和请求模块编写 GET 请求

javascript - 如何在 Chrome 插件/其他来源中使用 CSRF token

JavaEE - Web 应用程序和导航逻辑

ios - 查看 iOS 应用程序的设置 cookies?

java - 了解构造函数(非常简单的代码)

java - 内存数据库选项(开源和基于 Java)

JFrame 中的 JavaFX 菜单

java - 无法在 Tomcat 上运行 webapp,错误 51,尽管 java -version 是正确的,Mac OS X