2017-02-19 23 views
3

私はJWTの新機能で、JWTを利用するコードベースを継承しました。今私は直面しているいくつかの非常に基本的な問題があり、私は答えを見つけることはありません。この質問はコードベースではありませんので、私にご負担ください。JWTトークンのリフレッシュ(セッションのスライド)とサインアウト

私のJWTトークンは4時間有効です。ここに私の要件/制約があります。

  1. ユーザーが3時間59分で作業している場合、ここにあります。彼らのセッションは2時間延長され、資格情報を再入力する必要はありません。

  2. クライアント側のJavaスクリプトは、ユーザー資格情報をキャッシュしてはなりません。

  3. JWTトークンを新しいもので更新することはできますが、サーバーで行うすべての要求に対しては実行しないでください。そのため、クライアントは、JWTトークンをリフレッシュするためには時間が合っていると知的でなければなりません。セッション中に1000個のアクティブトークンが生成され、それらのすべてがアクティブであるシナリオで終了するため、アプリケーションに対する各リクエストごとに新しいトークンを発行してはいけません。サインアウトの要件がさらに厳しくなります。

  4. ユーザーがサインアウトをクリックするとJWTトークンはもはや使用できなくなります。その寿命はまだ有効ですが。

  5. サインアウトが発生した場合。発行されたすべてのトークン(セッション拡張の一部として)は無効になるはずです。最後のものだけではありません。

私はJWTについて読んで始めていますが、私の要件はJWTで満たされないようです。これらの要件は、セッションIDアプローチで非常に簡単に満たすことができます。私はまだJWTをあきらめたくありません。

答えて

3

JWTの寿命延長

あなたは古いものでJWTを発行することができます。有効期限が近づいたら、クライアントアプリケーションは新しいJWTを要求する必要があります。クライアントは、expクレームを読み取って有効期限を知っており、リフレッシュサービスを呼び出して新しいトークンを取得することができます。クライアントアプリケーションが閉じている場合は、JWTは失効すると、ユーザーが再度資格情報を提示することが必要であろう

トークンの有効期限が切れてみましょうすることをお勧めします

ログアウトしていますが、にブラックリストを使用することができます店JWTまだ有効ですが、認証に使用することはできません。

  • ユーザーがクリックが近いexpiratioへの切符を更新した後

  • をログアウトするとn時間

ユニークな識別子jtiをJWTに追加する必要があります。ブラックリストにはjtiexpが含まれます。現在時刻が>expになると、エントリを破棄できます。

Invalidating client side JWT session

関連する問題