私はCXF SOAPサービスで、基本認証を使用してスプリングセキュリティで保護されています。tomcat 8.5 "ソケット書き込みエラー"(スプリングセキュリティとCXF)
セキュリティ設定:アプリケーションはTomcatを8.5.11に配備されている
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and().httpBasic()
.and().csrf().ignoringAntMatchers("/ws/**");
}
、認証がOKで、SOAPサービスはOKですが、私は、リクエストボディが大きい場合、気づい(2メガバイト)、クライアント(SOAPUI)んサーバーの応答が得られませんが、次のようになります。
ERROR:java.net.SocketException: Connection reset by peer: socket write error
java.net.SocketException: Connection reset by peer: socket write error
基本認証が先に実行されないと問題が発生します。リクエストにBASIC認証ヘッダーがない場合、401応答を送信する代わりにTomcatが中断します。 BASIC認証ヘッダーが存在する場合、すべてがOKであり、要求が処理され、応答が送信されます。それは問題のように見える認証方法を交渉しているように見える - クライアントは、最初に試してみて、その後、サーバーの応答は基本的な認証を期待し、クライアントは適切な認証ヘッダーを送信します。小さなペイロードの場合でも動作しますが、ペイロードが2MBを超えると、Tomcatは最初の(認証されていない)リクエストをログに記録せずに黙ってブレークします。
同じアプリがJetty Mavenプラグインで動作するのは面白いです。
この動作を制御できる設定はTomcatにありますか?要求サイズに関係なく、BASIC認証ヘッダーがない場合、Tomcatは401に応答する必要があります。今のように、要求が認証されていなくても、Tomcatは要求本体全体を読み込もうとします。
いいえ、これはサイズの上限ではありません。私は明確に春のセキュリティがオフになっている場合、それが動作すると述べた。元の投稿をお読みください。 – Dario