Class CsrfTokenVerificationHandler

java.lang.Object
nablarch.fw.web.handler.CsrfTokenVerificationHandler
All Implemented Interfaces:
Handler<HttpRequest,HttpResponse>, HttpRequestHandler

public class CsrfTokenVerificationHandler extends Object implements HttpRequestHandler
CSRFトークンの検証を行うハンドラ。

本ハンドラの処理は次の順番で行われる。

  1. セッションストアからCSRFトークンを取得する
  2. 取得できなかった場合はCSRFトークンを生成してセッションストアへ保存する
  3. HTTPリクエストが検証対象かどうかを判定する
  4. 検証対象の場合はHTTPリクエストヘッダ、またはHTTPリクエストパラメータからCSRFトークンを取得して検証を行う
  5. 検証に失敗した場合はBadRequest(400)のレスポンスを返す
  6. 検証に成功した場合は次のハンドラへ処理を移す
  • Field Details

    • REQUEST_REGENERATE_KEY

      public static final String REQUEST_REGENERATE_KEY
      CSRFトークン再生成の要求を表す値をリクエストスコープに設定する際に使用するキー
      See Also:
  • Constructor Details

    • CsrfTokenVerificationHandler

      public CsrfTokenVerificationHandler()
  • Method Details

    • handle

      public HttpResponse handle(HttpRequest request, ExecutionContext context)
      Description copied from interface: HttpRequestHandler
      HTTPリクエストに対する処理を実行する。
      Specified by:
      handle in interface Handler<HttpRequest,HttpResponse>
      Specified by:
      handle in interface HttpRequestHandler
      Parameters:
      request - HTTPリクエストオブジェクト
      context - サーバサイド実行コンテキストオブジェクト
      Returns:
      HTTPレスポンスオブジェクト
    • setCsrfTokenGenerator

      public void setCsrfTokenGenerator(CsrfTokenGenerator csrfTokenGenerator)
      CSRFトークンの生成を行うインターフェースを設定する。
      Parameters:
      csrfTokenGenerator - CSRFトークンの生成を行うインターフェース
    • setVerificationTargetMatcher

      public void setVerificationTargetMatcher(VerificationTargetMatcher verificationTargetMatcher)
      HTTPリクエストがCSRFトークンの検証対象となるか判定を行うインターフェースを設定する。
      Parameters:
      verificationTargetMatcher - HTTPリクエストがCSRFトークンの検証対象となるか判定を行うインターフェース
    • setVerificationFailureHandler

      public void setVerificationFailureHandler(VerificationFailureHandler verificationFailureHandler)
      CSRFトークンの検証失敗時の処理を行うインタフェースを設定する。
      Parameters:
      verificationFailureHandler - CSRFトークンの検証失敗時の処理を行うインタフェース