2011-06-05 150 views
1

我有一個servlet應用程序部署在tomcat 7.0服務器上(稱之爲服務器A)。該應用程序將獲取用戶的憑據並將其傳遞給另一臺服務器(服務器B)以檢索數據。http服務器認證

問題:

用戶Alice從機器1登錄到服務器A.服務器A使用Alice的憑證來訪問服務器B的getPasswordAuthentication()是用來從機器2隨後通過Alice的憑證服務器B,用戶Bob登錄到服務器A.服務器A將繼續使用Alice的憑證訪問服務器B.我注意到getPasswordAuthentication()不會爲用戶Bob調用。

當服務器A試圖訪問服務器B時,是否有強制身份驗證的方法? ps:如果重新啓動服務器A上的tomcat,重新啓動後將對服務器B的第一個請求執行驗證。

非常感謝您的反饋。

回答

0

你需要顯式地清除使用AuthCacheValue.setAuthCache(new AuthCacheImpl());

這是因爲該證書是默認緩存訪問服務器B的資源之前緩存並且沒有指定緩存行爲的配置。

import sun.net.www.protocol.http.AuthCacheValue; 
import sun.net.www.protocol.http.AuthCacheImpl; 
[....] 
AuthCacheValue.setAuthCache(new AuthCacheImpl()); 
+0

謝謝。這解決了問題。 – 2011-06-05 11:22:13

0

您沒有指定正在使用的認證方案。 「基本的HTTP身份驗證」?你也沒有提到服務器B返回的cookies發生了什麼。

您的服務器可能會在所有會話共享的某個全局變量中緩存基本http身份驗證,或者您正在緩存服務器B在所有會話共享的某個全局變量中返回的Cookie。在任何情況下,認證材料需要在會話數據服務器A上

+0

使用基本HTTP認證。 – 2011-06-05 11:29:23