質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

JWT(JSON Web Token)

JWT(JSON Web Token)とは、JSONをベースとしたアクセストークンの仕様。電子署名付きのURL safeなJSONのことを指します。電子署名が付いているため、改ざんをチェックできる点がメリットです。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

0回答

438閲覧

JWTのrefresh-tokenの利用について

prof

総合スコア179

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

JWT(JSON Web Token)

JWT(JSON Web Token)とは、JSONをベースとしたアクセストークンの仕様。電子署名付きのURL safeなJSONのことを指します。電子署名が付いているため、改ざんをチェックできる点がメリットです。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

0グッド

1クリップ

投稿2021/02/11 12:39

編集2021/02/12 15:45

ネットをググっても解決しなかったので質問させていただきます。お願いします。

現在、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が返ってきたときという指定をする限り。

他にベストな手法、また僕の記述の間違いがあれば教えていただけると幸いです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問