Flask Academy · レッスン

リフレッシュトークンと有効期限

再ログインせずにアクセストークンをローテーションします

レッスン 4/413 ステップ

「リフレッシュトークンと有効期限」はCoddyKit上の無料Flask Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFlask Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Flask Academyコースには全4レッスンが含まれています。

トークンの有効期限が切れる理由

盗まれたトークンが危険なのは、使える間だけです。すべてのアクセストークンに短いexpiryを設定すると、リスクにさらされる期間を短縮できます。⏳

expクレーム

有効期限は、タイムスタンプであるトークンのexpクレームに保存されます。時刻がそれを過ぎると、トークンはどのような場合でも拒否されます。

有効期間を設定する

JWT_ACCESS_TOKEN_EXPIRESでアクセストークンの有効期間を制御します。15分のような短い期間が、妥当なデフォルトです。

from datetime import timedelta
app.config["JWT_ACCESS_TOKEN_EXPIRES"] = timedelta(minutes=15)

再ログインの問題

有効期限を短くすると安全ですが、15分ごとにユーザーがパスワードを入力しなければならないのは不便です。これを解決するのがrefresh tokenです。

2つのトークン、2つの役割

短期間のアクセストークンはAPIを呼び出し、長期間有効なrefresh tokenは新しいアクセストークンを要求する以外のことはしません。

ログイン時に両方を発行する

ログイン時にアクセストークンとrefresh tokenを同時に発行し、両方をクライアントに返します。

from flask_jwt_extended import create_refresh_token
rt = create_refresh_token(identity=user.id)

リフレッシュ用エンドポイント

jwt_required(refresh=True)で保護した/refreshルートを追加し、有効なリフレッシュトークンだけが到達できるようにします。

@app.post("/refresh")
@jwt_required(refresh=True)
def refresh():
    ...

新しいアクセストークンを返す

/refreshの内部で識別情報を読み取り、まったく新しいaccess tokenを発行します。ユーザーはパスワードを再入力せずに処理を続けられます。🔄

new = create_access_token(identity=get_jwt_identity())
return {"access_token": new}

リフレッシュトークンは長く使える

JWT_REFRESH_TOKEN_EXPIRESを数日または数週間に設定します。使用される機会が少ないため、長い有効期間にすることは許容できるトレードオフです。

app.config["JWT_REFRESH_TOKEN_EXPIRES"] = timedelta(days=30)

リフレッシュトークンを安全に保管する

強力な権限を持つため、リフレッシュトークンはsecure storageに保管し、JavaScriptから平文で読み取れる場所には決して置かず、/refreshにだけ送信します。

トークンを失効させる

ユーザーを本当にログアウトさせるには、サーバーが拒否するトークンIDのblocklistを追加します。これは、ステートレス認証でときどき必要になる唯一の状態です。

クイックチェック

それぞれのトークン種別の役割を思い出してください。

まとめ

アクセストークンの有効期間を短くし、/refreshで新しいトークンを取得できる長期間有効なrefresh tokenと組み合わせます。失効させるにはblocklistを追加します。✅

無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「リフレッシュトークンと有効期限」レッスンは無料ですか?

はい。「リフレッシュトークンと有効期限」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Flask Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Flask Academyコースには全4レッスンが含まれています。

「リフレッシュトークンと有効期限」で何を学びますか?

再ログインせずにアクセストークンをローテーションします ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Flask Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのFlask Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「リフレッシュトークンと有効期限」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このFlask Academyレッスンでコードを書いて実行できますか?

はい。すべてのFlask Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. セッションとステートレスなトークン
  2. ログイン時にアクセストークンを発行する
  3. jwt_requiredでエンドポイントを保護する
  4. リフレッシュトークンと有効期限
← Flask Academyに戻る