Springブート私はこれをSpring Securityでexcellent Baeldung articleと読み、基本認証を実装しました。私が構築する必要がある単純なRESTサービス(いいえ UI/webapp)のためにそれを実装することに興味があります。Spring WebSecurityConfigurerAdapterを設定して例外ハンドラを使用する
私は特にBasicAuthenticationEntryPoint
implに興味があります。このIMPLのcommence
オーバーライドでは、著者:
- 応答に
WWW-Authenticate
ヘッダを追加します。 - レスポンスにHTTPステータスコードを設定します。
- 実際の応答エンティティを応答に直接書き込みます。
:と@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! }
- は、私は自分のアプリケーションのための基本的な認証を実現するために、この作者の例をフォローしたいが、私はすでに完全に機能して
ResponseEntityExceptionHandler
は私のアプリのために働いてきた分野
の名前を設定します。
Spring Securityを結びつける方法はありますか?Basic Authは既存の/作業中に失敗しますResponseEntityExceptionHandler
?
私のWebSecurityConfigurerAdapter
implを例外ハンドラに結びつける方法があります。失敗した認証や許可の試行で例外がスローされ、例外ハンドラで捕捉されます。
私の例外ハンドラは、の例外が発生したときにHTTP応答を管理および設定する中心的な場所であるため、その認証関係に関係なく使用できます。
これは可能ですか?可能であれば、私は例外ハンドラ内の応答にそれを追加する必要がありますか(なぜ/なぜではないのですか?)前もって感謝します!
あなたは間違っているに転送されたエラーを、送信カスタム
org.springframework.security.web.AuthenticationEntryPoint
を使用して終了しました。春と春のセキュリティ(ACEGI)は異なる歴史を持つ異なるプロジェクトです。 [Wikipedia](https://en.wikipedia.org/wiki/Spring_Security)を参照してください。したがって、統合は完全ではありません。 – dur私はあなたの意見にSpringのユーザーとして同意しますが、それは奇妙ではない歴史を見て(それは私のポイントです)。 Spring Securityのコア部分の多くはACEGIのものです。問題がある場合は、Spring Securityを変更する(コミットするか、少なくとも機能要求を作成する)、それと一緒に暮らす、またはSpringをまったく使用しないことができます。 – dur