現状
SpringBoot、thymeleafを使用して、WEBアプリケーションを作成しています。
ログイン画面を実装しているため、Spring Securityを利用しており、
CSRF対策としてトークンを発行しWEB画面に埋め込まれるようにしております。
html
1 <!-- CSRF対策用トークン埋め込み --> 2 <input type="hidden" id="crsf_tokn" th:value="${_csrf.token}"></input>
上記の状態で、ブラウザ(Chromeを使用)上の異なるタブからWEBアプリケーションした際、
1タブ目のログイン後、2タブ目でログインしようとすると、以下のエラーが発生します。
Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Mon Apr 10 18:45:49 JST 2017 There was an unexpected error (type=Forbidden, status=403). Invalid CSRF Token '9ffc4be1-4a5e-48c3-880b-db6c8e741078' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
トークンの値が現在のセションに紐づくものでない('9ffc4be1-4a5e-48c3-880b-db6c8e741078'ではない)ため、
エラーが出ているのではないかと思っています。
画面を操作する上で、発行されるトークンの値は以下のようになっています(トークン値が長いのでABC・・・で書いています)
・1タブ目のログイン画面・・・トークン値はA
・2タブ目のログイン画面・・・トークン値はA
・1タブ目のログイン以降の画面・・・トークン値はB
・2タブ目のログインしようとしたときに上記エラーが発生(トークン値がBでないため)
質問
【質問1】
1タブ目のログイン前後でトークンの値が変更するのはなぜですか?
セッションが同じであればトークンも同じだと思っていたのですが。。。
【質問2】
2タブ目でもログインできるようにする方法がありますでしょうか?
以上、よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/11 00:59