サーブレット コンテナー アプリの認証を行う Tomcat ValveBase クラスの実装があります。http REST 呼び出しを認証する 1 つの方法は、署名してからサーバー側で署名を確認することです。このチェックは ValveBase クラスで行います。
問題は、(署名を検証するために) リクエストの InputStream を使用した後、リクエスト (org.apache.catalina.connector.Request) を次のバルブ実装に渡し、それがサーブレットに到達するまでに、inputStream を渡すことです。なくなっている。署名検証手順で消費されたため、配信するコンテンツはありません。
javax.servlet API では、HttpServletRequestWrapper を使用して独自の ServletRequest を実装し、実際のリクエストをコンストラクター引数として渡すことができます。その場合、コンテンツが 1 回だけ読み込まれるという状況は回避できましたが、カタリナ リクエストの場合は、思ったよりもデリケートだったようです。何か案は?ありがとう。