0

セキュリティ制約を使用してリソースへのアクセスをロックするJava Webアプリケーションがあります。私はAjaxリクエストに認証が必要なときにHTTP 401レスポンスを操作しようとしているので、レスポンスでHTTPステータスを監視し、必要に応じてそれを変更するフィルタを作成しました。セキュリティ制約を伴うリクエストのフィルタリング

問題は、認証が必要な場合、401がブラウザに送信されるまでフィルタが呼び出されないようです。要求処理チェーンでは、セキュリティ制約がフィルタに先行しているようです。私のフィルタのurlパターンは、セキュリティ制約のどれよりも一般的です。プラットフォームはWebSphereです。

セキュリティ制約とフィルタの優先順位がServlet 2.5仕様で指定されている場所がわかりません。私は何かを逃したか?

答えて

1

まず、指定されていない場合、これはコンテナの実装の詳細として残されていることを意味します。
具体的にはWebSphereを調べてください。
セキュリティの制約(私が正しく思い出した場合)がValvesによって実装されているため、要求チェーン内のアプリケーションコードの前にあるので、同じことがTomcatでも起こると思います。
あなたのコンテナに保護を割り当てると、リクエストがあなたのフィルタに到達すると、あなたのコンテナの認証メカニズムをすでに通過しているはずです(私の見解は、フィルタがあなたのリソース)。
FilterValve

に置き換えて、問題を解決します。
関連する問題