web-dev-qa-db-ja.com

Postmanレストクライアントからspring csrfトークンを送信するにはどうすればよいですか?

私は春のフレームワークでcsrf保護を持っています。そのため、リクエストごとにajax呼び出しからヘッダーでcsrfトークンを送信しますが、これは完全に機能しています。

<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>

var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");

In ajax

beforeSend: function(xhr) {
                xhr.setRequestHeader(header, token),
                xhr.setRequestHeader("username", "xxxx1"),
                xhr.setRequestHeader("password", "password")
            }

csrfトークンを生成し、Postman Rest Clientのヘッダーセクションに含める? Postman Rest Clientからcsrfトークンを送信するのを手伝ってもらえますか? enter image description here

42

これを一貫して行う最も簡単な方法なので、毎回トークンを取得する必要はありません。

注:ブラウザのCookieにアクセスするには、PostMan Interceptorをインストールしてアクティブにする必要があります

  1. 環境変数を保存できるように新しい環境を作成します

enter image description here

  1. XSRF Coo​​kieを環境変数に保存するテスト付きのログインメソッドを作成します。テストタブでこのコードを投稿します

    //Replace XSFR-TOKEN with your cookie name
    var xsrfCookie = postman.getResponseCookie("XSRF-TOKEN");
    postman.setEnvironmentVariable("xsrf-token", xsrfCookie.value);
    

EDIT5.5.2以降の郵便配達員を使用している場合は、Cookieもデコードする必要があります。また、Cookieを取得する別の方法も提供しています。 @Sacapucesが指摘するように

pm.environment.set("xsrf-token", decodeURIComponent(pm.cookies.get("XSRF-TOKEN")))

これで、xsrf-tokenを含む環境変数が作成されます。

  1. ログイン方法を保存します

  2. 作成する新しい投稿を作成し、ヘッダーにXSRF-Token-Header Keyとそれにアクセスするハンドルバーの環境変数を追加します{{}}

enter image description here

  1. これで、新しいリクエストを実行する前に、ログインを実行していることを確認してください。環境変数が保存され、実際にリクエストを実行すると、自動的に追加されます。
34
johnny 5

以下の手順に従って、csrfトークンでRESTを送信できます。

  1. ログイン時にスプリングセキュリティによって自動的に生成されたCSRFトークン。応答ヘッダーに表示されます。

  2. CSRFトークンは、ヘッダーのCSRFトークンでX-CSRF-TOKENを設定することにより、後続の要求で使用できます。

10
tranceholic

まず、PostMan Interceptorをインストールし、ブラウザのCookieにアクセスできるようにアクティブ化する必要があります。

  1. GETリクエストを作成してCSRFトークンを取得する必要があります:ヘッダー: "XSRF-TOKEN"および値: "Fetch"

  2. Cookieタブにトークンが表示され、コピーできます(注意:Cookieの名前の付け方をSpringに設定できます。Cookieには「XSRF-TOKEN」以外の名前が付いている可能性があります。注意:この空白文字は改行からのトークン)

  3. POSTリクエストを作成し、ヘッダーを次のように設定します。

6
Joel Neukom

私にとっては、X-CSRF-TOKENをヘッダーに追加するバリアントです。 enter image description here

3
DmRomantsov

X-CSRF-Tokenをキーとして、FETCHをGETリクエストヘッダーの値として入力すると、レスポンスヘッダーでトークンを受け取ります

1
KPS250

環境変数などを設定したくない場合は、ここが最も速い解決策です

https://stackoverflow.com/a/49249850/3705478

1
sofs1