質問: jwt(json web token)自動有効期限切れ 私たちの新しいrest apiにjwtベースの認証を実装したいです。しかし、有効期限がトークンに設定されているので、自動的に延長することは可能ですか?その間にユーザーがアプリケーションを積極的に使用していたとしても、x分ごとにサインインする必要はありません。それは巨大なuxの失敗になるでしょう。しかし、有効期限を延長すると新しいトークンが作成されます(そして古いトークンは有効期限が切れるまで有効です)。そして、それぞれのリクエストの後に新しいトークンを生成することは私にとってばかげて聞こえます。複数のトークンが同時に有効な場合、セキュリティ上の問題があるように思われます。もちろん、ブラックリストを使って古いものを無効にすることもできますが、トークンを保存する必要があります。そしてjwtの利点の1つはストレージがないことです。私はauth0がそれをどのように解決したかを見つけました。彼らはjwtトークンだけでなく更新トークンも使います: https://docs.auth0.com/refresh-token ただし、これを実装するには(auth0なしで)、リフレッシュトークンを保存して有効期限を維持する必要があります。それでは本当の利点は何ですか?トークンを1つだけ(jwt以外)にして、有効期限をサーバーに保持しないのはなぜですか。他の選択肢はありますか? jwtの使用はこのシナリオには適していませんか?
回答: jwtアクセストークンを無効にする手順は次のとおりです。1)ログインしたら、クライアントに2つのトークン(アクセストークン、リフレッシュトークン)を送信します。 2)アクセストークンの有効期限が短くなり、更新の有効期限が長くなります。 3)クライアント(フロントエンド)は自分のローカルストレージにリフレッシュトークンを保存し、クッキーにアクセストークンを保存します。 4)クライアントはapisを呼び出すためにアクセストークンを使用します。しかし、期限切れになったら、ローカルストレージからリフレッシュトークンを選び、auth server apiを呼び出して新しいトークンを取得します。 5)あなたの認証サーバーは更新トークンを受け入れてその有効性をチェックし新しいアクセストークンを返すapiを公開します。 6)更新トークンが期限切れになると、ユーザーはログアウトされます。あなたがより多くの詳細が必要であれば私に知らせてください、私は同様にコード(java + springブート)を共有することができます。