2014-02-11 59 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