1

Tomcat 7.0 サーバー (サーバー A と呼びます) にデプロイされたサーブレット アプリケーションがあります。アプリはユーザーの資格情報を取得し、それを別のサーバー (サーバー B) に渡してデータを取得します。

問題:

マシン 1 のユーザー Alice がサーバー A にログインします。サーバー A は Alice の資格情報を使用してサーバー B にアクセスします。getPasswordAuthentication () を使用して Alice の資格情報をサーバー B に渡します。その後、マシン 2 のユーザー Bob がサーバー A にログインします。サーバー A は引き続きAlice の資格情報を使用してサーバー B にアクセスします。getPasswordAuthentication () がユーザー Bob に対して呼び出されていないことに気付きました。

サーバー A がサーバー B にアクセスしようとするたびに認証を強制する方法はありますか? ps: サーバー A で tomcat を再起動すると、再起動後にサーバー 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 に答える