2014-02-11 33 views
2

我们有一个weblogic应用程序需要支持从多个域(例如“foo.com”和“bar.com”)提供服务。一旦用户在这些域中的一个域上启动会话,他们就可以访问该主域下的子域(例如“a.foo.com”,“b.foo.com”),并在所有这些子域中共享该会话。如果用户从“foo.com”跳转到“bar.com”,他们将失去他们的会话,这很好。支持weblogic中的多个Cookie域

我们在JBoss/Tomcat上成功实现了这个功能,通过定制一个'Valve'来重写会话cookie,使其始终位于被请求的serverName(即request.getServerName())的顶级域中。

但是,我们目前正在将我们的应用程序从JBoss迁移到Weblogic,并试图找出如何支持相同的需求。我们已经发现,weblogic的确实允许通过的weblogic.xml中设置“cookie的域”物业共用跨越单个域的多个子域的会话:

<session-descriptor> 
    <cookie-path>/store</cookie-path > 
    <cookie-domain>.foo.com</cookie-domain> 
</session-descriptor> 

但是,我们还没有想出如何配置支持多个域名(即foo.com和bar.com)。从我们可以看出,weblogic.xml文件不支持这一点。

如果我们只配置weblogic.xml中的其中一个域,那么对于未配置的域(即每个请求导致新会话),会话都无法正常工作。

有关如何在weblogic上为单个web-app支持跨不同域的会话的任何想法?

我们在Weblogic 12c上运行。

+1

我不认为这是Weblogic支持的OOTB。我知道这不是您的解决方案 - 但您需要应用程序的两次部署 - 每次都有自己的weblogic.xml – JoseK

回答

1

从WebLogic 12c开始,Oracle确认我们正在尝试执行的操作当前不受支持。目前还没有实施这种功能的计划。

我们选择实施的解决方法是使用mod_rewrite将HTTP服务器级别的JSESSIONID cookie的域重写为请求的域。

0

我相信这样的选项不应该被支持。如果允许的话,那么什么都不能阻止hotmail.com在其配置文件中配置yahoo.com(比如说)并访问yahoo的JSESSIONID值。

+1

Cookie安全策略由浏览器而非服务器强制执行。服务器将读取浏览器发送的任何内容。在你的例子中,浏览器的工作是在hotmail.com上设置或发送yahoo.com cookies。 – zmcmahon