ネットをググっても解決しなかったので質問させていただきます。お願いします。
現在、DjangoとNextでGoogle認証を実装させています。信頼できるモジュールを組み合わせ、処理を書くことでRestFramework側は実現できました。
実際、使う技術については関係ありません。質問はJWTの処理についてです。
ありえる状況
JWTのaccess-tokenは短めに設定しておくのが普通で、そのように設定しています。
cookieにaccess-tokenを保存しています。
もちろん、翌日には期限切れに確実になります。
(翌日以降サイトにアクセスしたときには期限切に当然するということ、実際は5~60分を検討)
そこで、refresh-tokenを使い、pipの外部モジュールでできるのですが、
そのrefresh-tokenを値をあるエンドポイントに渡すことで、そのrefresh-tokenをブラックリストに入れ、つまり最初に生成したトークンを利用不可能にし、
新たなaccess-token,refresh-tokenを発行します。
今回、cookieに保存することによるCSRFなど、セキュリティについては質問の目的と異なるため無視します。
質問1
このとき、refresh-tokenもcookieに入れておくしかないと思いますが、正しいでしょうか。
質問2
また、refresh-tokenを使って、access,refresh-tokenを再発行しますが、
access-tokenにより認証のいるエンドポイントにフロントエンドからアクセスし、 ↓ 401が返ってきたときにrefresh-tokenを用いてリフレッシュ用のエンドポイントにアクセスし ↓ access,refreshを再取得しcookieに入れる、
という流れにすればよいのでしょうか。
正直、質問2では、もとからトークンがなくても無限にエンドポイントにアクセスしてしまう可能性があるかもしれないです。401が返ってきたときという指定をする限り。
他にベストな手法、また僕の記述の間違いがあれば教えていただけると幸いです。
よろしくお願いいたします。
あなたの回答
tips
プレビュー