2015-10-14 1 views
6

CSRF保護が有効になっているSpring Webアプリケーションがあります。私はAJAX呼び出しを介してRESTfulなサービスにアクセスできますが、httpurlconnectionなどの他のアプリケーションでサービスにアクセスすると、401エラー(CSRFトークンnull)が発生します。Spring RESTful WebサービスでCSRF保護を処理する方法は?

RESTfulサービスにアクセスするには、リクエストヘッダーにトークンを渡す必要がありますが、CSRFトークンを取得するにはどうすればよいですか?

答えて

10

あなたはCSRFトークンを取得し、Spring MVCのでマッピングを作成することができます。

@RequestMapping(value="/csrf-token", method=RequestMethod.GET) 
public @ResponseBody String getCsrfToken(HttpServletRequest request) { 
    CsrfToken token = (CsrfToken)request.getAttribute(CsrfToken.class.getName()); 
    return token.getToken(); 
} 
+0

私は春のバックエンドにこれを追加し、私はCSRFトークン下駄ことができます。今質問は、私がSpringのPOST/PUT Webサービスに戻す方法は?私は、JSONデータのこの部分を送り返したくないと思います。私は、トークンをヘッダーに入れたり、リクエスト内のクッキーの一部として置いたりするのは喜ばしいことです。 – tjholmes66

+1

@ tjholmes66トークンは 'X-CSRF-TOKEN'という名前のヘッダで送ることができます。 – holmis83

+0

はい。ありがとう。私は今それを理解した。ありがとう! – tjholmes66