ググッても解決しなかったので質問させていただきます。
JsonWebTokenには
- access
- refresh
の二種類があり、両方をcookieに保存するとした場合、意味がわからなくなりました。
再生回数の多い海外のYoutube動画でそうしていました。
JWTは、
永久に使えるtokenが危険だから期限があり、
期限の短いものをリフレッシュさせるトークンもあり、
改ざんしづらいように署名もある
というのはわかりますが、
だからといって二種類のTokenが必要なのでしょうか?
accessのみを利用して、期限を長期間(一ヶ月)にすればいいと思ってしまいました。
ただ、そうしたときにJWTではaccessのみで期限を伸ばすリフレッシュができないため、refreshも用意し、それならばaccessは期限を短くして使おう、ということでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/18 04:57
2021/02/18 07:20
回答2件
0
ベストアンサー
accessのみを利用して、期限を長期間(一ヶ月)にすればいいと思ってしまいました。
ただ、そうしたときにJWTではaccessのみで期限を伸ばすリフレッシュができないため、refreshも用意し、それならばaccessは期限を短くして使おう、ということでしょうか?
勘違いがあると思いますが、jwt
とアクセストークン・リフレッシュトークン
は無関係です
jwtはユーザー端末に情報を保存する為に保存する情報を暗号化しつつ期限など様々な値を含めて保存する事を目的としたもの
様々な値についてはwikiでもみてください
アクセストークン・リフレッシュトークンはOAuth2.0の仕様
簡単に喩えると
一ヶ月間入り放題のテーマパークに入場する為に免許証を提示(ID/PWの入力)をして、一ヶ月間有効の入場券発行用パスポート(リフレッシュトークン)と当日限り有効の入場券(アクセストークン)を取り、テーマパーク内のアトラクションを利用する際は入場券(アクセストークン)を提示する
翌日に遊ぶ為には最初に貰った入場券は使えない(アクセストークンの有効期限切れ)ので、パスポートを提示して新しい入場券を貰う(リフレッシュトークンを元にアクセストークンを更新)
だからといって二種類のTokenが必要なのでしょうか?
jwtとか関係無しに必要かどうかだについて言うと、絶対に盗聴・漏洩しないのなら不要です。
だけど普通は絶対漏洩しないシステム作りより、万が一漏洩しても被害を最小限に抑えるシステム作りをするので。
投稿2021/02/18 03:03
総合スコア6426
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/18 04:20
2021/02/18 04:40
2021/02/18 04:52
2021/02/18 05:02
2021/02/18 10:59
0
JWTのアクセストークンは、認証サーバーに問い合わせることなく、トークンのみで認証状態を把握できます。これがJWTの特徴・メリットですが、その裏返しのデメリットとして、仮に特定ユーザーをサイト側で認証拒絶したい事態になった際にも、アクセストークンが有効である期間中は認証を拒否できません。また、サーバー側でログアウトの実装もできません。攻撃者がアクセストークンを持っていればログイン状態になってしまうからです(見かけ上のログアウト処理はできます)。
これに対する改善策の一つは、リクエスト毎にサーバーに認証状態を確認することですが、これだとJWTのメリットが薄れ、通常のセッションでよいということになります。
このため、JWTのアクセストークンの期限を短くして、期限内はJWTのみで認証を確認する一方、アクセストークンの期限切れによるリフレッシュの際にはサーバー側でログアウトや認証拒否の状態でないかを調べる方法が一般的に行われます。これは、JWTのメリットとデメリットをバランス良く実装するためです。
両者がどちらもcookieに保存されることは問題にはなりません。cookieよりも安全なストレージはブラウザにはないからです。仮に、たとえばアクセストークンをsessionStorage、リフレッシュトークンをcookieに保存しても、セキュリティ上安全にはなりません。なので、「どちらもCookieに保存する意味は何か」と考えても、あまり得るものはないでしょう。
投稿2021/02/17 23:59
総合スコア11705
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/18 04:40
2021/02/18 04:50
2021/02/18 04:56
2021/02/18 13:59
2021/02/19 02:53
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。