Postman 6.1.3にてX-CSRF-Token取得にハマる

XSRF対策がされているRESTful APIに対して、Postmanでテストしていたが、つい先日まで問題なかったにも関わらず挙動がおかしくなった。

具体的には、SAP API Business Hubにて公開されているAPIのSAP Cloud Platform Workflowを試していて、問題に遭遇。SAP Marketing Cloud (旧SAP Hybris Marketing Cloud) について試しても同じ問題を確認。

さて、何が原因???

原因と解決方法

結論から言うとPostman 6.1.3の不具合・バグの模様。

Postman Canaryを利用すれば問題解決するので、何かおかしいと思った人は何も考えずにまずはPostman Canaryを試してみると良い。

postman-bluePostman Canary Download

トラブルシュート

ちなみに私はこのトラブルシュートのために時間を費やすことになった。

うまく動いていた時と問題が発生しはじめた後でWeb API Callは何も変えていない。OSもブラウザも同じ。Postmanの各種ヘッダオプションもいじってみたが何も好転しない。

実は先週の段階で他の方からこの問題のことをは聞いていて、Web APIスクリプトを送ってもらったが再現しなかったため、原因不明としていた。

しかし問題が発生するようになった。

他に何を変えたのか?

Postman 6.1.3へのアップデートが原因

そういえば、Postmanのアップデート通知が何度もきていたが、更新は後回しにしていた。そして、先週末に重い腰をあげてアップデートしたことを思い出した。

問題が発生する前はかなり前のバージョン。

問題が発生した時には6.1.3を利用していた。

原因がPostmanそのものにある可能性を疑い、検索。ふたつレポートを発見。まさにこれが同じ問題だと思われる。

どうやらPostmanクライアントからAPI側に送信する際のヘッダのCookieの取り扱いに問題があり、それが原因で”X-CSRF-Token”:”Fetch”として取得する値が毎回可変し、2回目以降のコールのヘッダにセットしてもマッチしないのでエラーとなる模様。

Postman 6.1.3での”X-CSRF-Token”:”Fetch”の結果 – 毎回 X-CSRF-Tokenの値が異なる

Postman-613-csrftoken

Postman Canary (June 22, 2018)での”X-CSRF-Token”:”Fetch”の結果 – X-CSRF-Tokenの値は毎回変わらない

Postman-Canary-csrftoken

結論としてPostman 6.1.3が使えない。解決方法は二つ

  • 古いバージョンのPostmanにダウングレードする
  • Postman Canary (βバージョン) を利用する

Postman Canaryはリリース版のPostmanと併用して利用できるので、私はその方法で対応。Postmanに設定したスクリプトをエクスポートして、Postman Canaryにインポートして対応。

コメントを残す

メールアドレスが公開されることはありません。