2017-06-22 30 views
0

Springブート私はこれをSpring Securityでexcellent Baeldung articleと読み、基本認証を実装しました。私が構築する必要がある単純なRESTサービス(いいえ UI/webapp)のためにそれを実装することに興味があります。Spring WebSecurityConfigurerAdapterを設定して例外ハンドラを使用する

私は特にBasicAuthenticationEntryPoint implに興味があります。このIMPLのcommenceオーバーライドでは、著者:

  1. 応答にWWW-Authenticateヘッダを追加します。
  2. レスポンスにHTTPステータスコードを設定します。
  3. 実際の応答エンティティを応答に直接書き込みます。

    @ControllerAdvice 
    public class MyAppExceptionMapper extends ResponseEntityExceptionHandler { 
        @ExceptionHandler(IllegalArgumentException.class) 
        @ResponseBody 
        public ResponseEntity<ErrorResponse> handleIllegalArgumentExeption(IllegalArgumentException iaEx) { 
         return new ResponseEntity<ErrorResponse>(buildErrorResponse(iaEx, 
           iaEx.message, 
           "Please check your request and make sure it contains a valid entity/body."), 
          HttpStatus.BAD_REQUEST); 
        } 
    
        // other exceptions handled down here, etc. 
    
        // TODO: Handle Spring Security-related auth exceptions as well! 
    } 
    
    :と
  4. は、私は自分のアプリケーションのための基本的な認証を実現するために、この作者の例をフォローしたいが、私はすでに完全に機能してResponseEntityExceptionHandlerは私のアプリのために働いてきた分野

の名前を設定します。

Spring Securityを結びつける方法はありますか?Basic Authは既存の/作業中に失敗しますResponseEntityExceptionHandler

私のWebSecurityConfigurerAdapter implを例外ハンドラに結びつける方法があります。失敗した認証や許可の試行で例外がスローされ、例外ハンドラで捕捉されます。

私の例外ハンドラは、の例外が発生したときにHTTP応答を管理および設定する中心的な場所であるため、その認証関係に関係なく使用できます。

これは可能ですか?可能であれば、私は例外ハンドラ内の応答にそれを追加する必要がありますか(なぜ/なぜではないのですか?)前もって感謝します!

+0

あなたは間違っているに転送されたエラーを、送信カスタムorg.springframework.security.web.AuthenticationEntryPointを使用して終了しました。春と春のセキュリティ(ACEGI)は異なる歴史を持つ異なるプロジェクトです。 [Wikipedia](https://en.wikipedia.org/wiki/Spring_Security)を参照してください。したがって、統合は完全ではありません。 – dur

+0

私はあなたの意見にSpringのユーザーとして同意しますが、それは奇妙ではない歴史を見て(それは私のポイントです)。 Spring Securityのコア部分の多くはACEGIのものです。問題がある場合は、Spring Securityを変更する(コミットするか、少なくとも機能要求を作成する)、それと一緒に暮らす、またはSpringをまったく使用しないことができます。 – dur

答えて

0

私はこれが可能ではないと思います。 SpringセキュリティはServletFilterとして適用され、要求が@Controller注釈付きクラスに到達する前に適用されます。したがって、Springセキュリティによってスローされた例外は例外ハンドラ(@ControllerAdviceと注釈されます)によってキャッチされません。

が同様の問題を抱えていたので、私は順番にカスタムorg.springframework.boot.autoconfigure.web.ErrorController

関連する問題