generated at
JWTをセッション管理に使っていいだのよくないだのいう話
結論
リスクを理解して使えば良い

よく言われるリスク
セッションを即時無効化できない
トークンの有効期限が切れるまでセッションは続く
トークンにその辺の情報も含まれているのでリソースサーバーAuthサーバーにいちいち問い合わせない
Authサーバーで無効にしても問い合わせは来ないので切れない
対策としては、アクセストークンの有効期間短くしてリフレッシュトークンを使う
即時無効化はできない
どの程度のリスクと捉えるか
アクセストークンが盗まれてる時点でアレなので、検知してから無効化できるまでの時間を数時間〜数十分程度早められる(もしくは遅くなる)ことをどれほど意味があると考えるか
リフレッシュトークンの期限が切れる条件も載っている
パスワードを変えたりしても最大1時間は前のセッションが有効ということだな
有効期間はどれくらい短くしても現実的に問題ないのだろうか

Web Storageに保存することによるXSSのリスク
CookieならHttpOnlyつければブラウザしかアクセスできなくなる
それでもXSS対策としてはほとんど意味がない(と言われてる気がするけど本当だろうかzakuni)
あとなんかCSRF周りの話もある?
CSRFでXSSを起こしたりとか
多分この辺は、CookieとWebStorageを比較する別の話なのだと思う
ちなみにSessionStorageはページセッションの間持続するストレージであって、サーバー側のセッションを入れるためのものではない
誤解を生む名前になってる気がする

そもそもJWTJOSEの仕様に問題があるという主張
セッション管理とか以前に


セッションIDでなく、セッションデータそのものの情報をJWTで返して使わせるのにはリスクがある(?)
セッションIDでも盗まれたらセッションハイジャックされるのは変わらないはずだな……?
Authサーバーへの問い合わせが挟まることで無効化できるようになったりするということか
JWTにはそもそも電子署名が含まれているはずで、この場合セッションデータと呼んでいるものはなんだろうか
アクセス権とかの情報かな
どの話をしてるのかによってリスクも変わる
Stateless JWT
JWTそのものはステートレス
Statefull JWT
JWTとCookieの組み合わせとか

ちゃんと中身(とリスク)を理解して使いましょう、というセキュリテイの基本的な話のようだ
セキュリティはリスクの高低の話であって、0か1かではない
それメリットになってないよって話と明らかなデメリットだよって話が混ざってるとわかりにくい

セッションに関するリスクということで、こんな感じだろうか
された場合にどれぐらい被害が広がるか
検出できるかどうか

これらについても、違うテーマについて話すと噛み合わない
攻撃そのものをどう防げるか
攻撃が成功してしまった場合にどう対処できるか
あと、検知できるか
完璧に防げないからダメ、みたいなのはナンセンス
未知の脆弱性について語ることはできないので
どうだから意識しなくても防げるかとか、こうだから脆弱性を生みやすいとかならわかる
なので被害をどう最小限にできるか、という話も当然含まれて然るべき