2011-06-05 122 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