2017-02-07 9 views
0

私は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は要求本体全体を読み込もうとします。

答えて

0

要求サイズには制限があります。設定することができます。それを超えると、Tomcatは接続を閉じ、クライアントでリセットを行います。

+0

いいえ、これはサイズの上限ではありません。私は明確に春のセキュリティがオフになっている場合、それが動作すると述べた。元の投稿をお読みください。 – Dario

関連する問題