6

目前,我们面临跨子域共享相同会话的问题。我们正在使用 Jboss 服务器。

用户访问与其区域设置相对应的站点,例如具有唯一域名的 en_US。对应于域创建一个 cookie。允许用户转到具有不同域名的其他语言环境。问题是为另一个域创建了一个新的 cookie,它丢失了存储在前一个会话中的信息。我们需要跨域使用相同的会话 cookie。

防爆域:sample.au sample.co.uk sample.us

我要求研究 Iframe/p3p 解决方案。我对这个概念很陌生。你能指导我如何实现这一目标。

提前致谢

4

4 回答 4

11

您需要的是单点登录服务。您可以通过拥有一个集中的站点 Z 来管理会话/登录,从而为您的站点 A..Y 滚动您拥有的站点。

  • 用户到达站点 A,不提供任何会话 ID
  • 站点 A 将用户重定向到站点 Z
  • 站点 Z 可能在验证用户身份之后创建一个会话,并丢弃站点 Z cookie,将用户重定向回站点 A,其 URL 包含一个额外的有效负载,告诉站点 A 用户会话 ID 是什么
  • 站点 A 丢弃会话 cookie 允许用户继续在 A 上使用他们的共享会话

现在当用户访问站点 B

  • 站点 B 看不到会话,重定向到站点 Z
  • 站点 Z 看到它已经为这个人建立了一个会话,用会话 ID 有效负载将他们直接引导回 B
  • 站点 B 删除会话 cookie,一切都很好。

换句话说,您的信号登录服务为用户提供了他们可以挂起的东西(会话 cookie)以及他们可以传递给参与站点以证明他们已通过身份验证的东西。

于 2009-02-04T14:43:32.450 回答
6

Cookie 只能在对公共更高级别域有效的域中共享。所以foo.example.com并且bar.example.com可以共享一个为example.com. 请注意,cookie 的Domain参数值必须是.example.com(带前导点)才能完成此操作。

于 2009-02-04T14:23:54.033 回答
3

您需要将 cookie 的域设置为以点开头的顶级域,例如对于 subdomain1.domain.com 和 subdomain2.domain.com,您将会话 cookie 的域设置为:.domain.com。

在 JBoss 中,您应该能够为 javax.servlet.http.Cookie 类中的所有子域覆盖它。

于 2009-02-04T14:25:33.217 回答
0

在域之间共享 Cookie

http://www.15seconds.com/issue/971108.htm

它似乎使用“重定向”来翻译域之间的 cookie。但它太复杂了。仅供参考。

于 2009-08-22T09:54:53.293 回答