1

我在 tomcat 7.0 服务器(称为服务器 A)上部署了一个 servlet 应用程序。该应用程序将获取用户的凭据并将其传递给另一台服务器(服务器 B)以检索数据。

问题:

来自机器 1 的用户 Alice 登录到服务器 A。服务器 A 使用 Alice 的凭证访问服务器 B。getPasswordAuthentication() 用于将 Alice 的凭证传递给服务器 B。随后,来自机器 2 的用户 Bob 登录到服务器 A。服务器 A 将继续使用 Alice 的凭证访问服务器 B。我注意到 getPasswordAuthentication () 没有为用户 Bob 调用。

每次服务器 A 尝试访问服务器 B 时,有没有办法强制进行身份验证?ps:如果重启Server A上的tomcat,重启后对Server B的第一个请求会进行认证。

非常感谢您的反馈。

4

2 回答 2

0

您没有指定正在使用的身份验证方案。“基本 HTTP 身份验证”?您也没有提到服务器 B 返回的 cookie 会发生什么。

您的服务器将基本 http 身份验证缓存在所有会话共享的某个全局变量中,或者您将服务器 B 返回的 cookie 缓存在所有会话共享的某个全局变量中。在任何情况下,身份验证材料都需要在服务器 A 上的会话数据中。

于 2011-06-05T00:58:19.940 回答
0

您需要在访问服务器 b 的资源之前显式清除缓存,方法是使用AuthCacheValue.setAuthCache(new AuthCacheImpl());

这是因为默认情况下会缓存凭据,并且没有配置来指定缓存行为。

import sun.net.www.protocol.http.AuthCacheValue;
import sun.net.www.protocol.http.AuthCacheImpl;
[....]
AuthCacheValue.setAuthCache(new AuthCacheImpl());
于 2011-06-05T00:59:24.180 回答