私は個人用/趣味用のアプリケーション用のKoaベースのNode.jsバックエンドを持っています。JWTの有効期限とJWTペイロードの更新の処理
私はJWTトークンでセッション処理を実装しました。クライアント(AngularJS)は、成功したログイン後にトークンを取得し、トークンをどこかに格納します(現在はsessionStorage
にありますが、この質問の目的には関係ありません)。私はJWTが言う、ユーザーはので、私は彼の電話番号を提供するために、彼に尋ねた、私が好きな2FAオン表し、ユーザレコードを更新する必要がある場合
:
は、私は2つの質問がありますこの電話番号をユーザーのレコードに設定します。現在、電話番号の検証が成功した後、バックエンドに電話してユーザーレコードを更新し、更新されたユーザーレコードで新しいJWTトークンを作成します(ハッシュされたパスワードのようにJWTトークンから機密情報を除外しますが、クライアント側の使用のための電話番号を含める)。いくつかの資格証明が変更され、この新しいトークンで既存のクライアント側トークンを更新するときに、新しいトークンを作成することはできますか?別のトークンを作成することは決してありません。認証を成功させた場合にのみ作成してください。トークンのペイロードを更新する方法は?
期限切れのJWTトークンをどのように処理すればよいですか?私の考えでは、3つの(可能な)シナリオがあります:
2.1。 JWTは短命、例えば15分と設定されています。バックエンドサーバーが401 Unauthenticated '無効なトークン'(これはデフォルト動作の
koa-jwt
だと思います)を返信すると、クライアントが自動的にログアウトして再認証が必要になります。しかし、私はまた、更新された有効期限を持つトークンを再作成するバックエンドのチェーンの最後の補完的なミドルウェアをセットアップし、クライアントは既存のトークンを最新のものに置き換えます。したがって、ユーザーがアクティブで、保護されたAPI呼び出しごとにアプリケーションを使用する場合、成功した場合は、古いトークンを置き換える新しいトークンを作成します。2.2。 JWTは長期生存期間、例えば1週間と設定され、期限が切れた場合は、クライアントからの再認証を選択します。
2.3。コピーhttps://tools.ietf.org/html/rfc6749#section-1.5。ここでは、認証に成功した後にJWTトークンを作成するときに、access_tokenとrefresh_tokenを送信します。 access_tokenが期限切れになり、サーバーがHTTP 401 '無効なトークン'(
koa-jwt
の既定値)で応答すると、クライアントはrefresh_tokenをバックエンドに送信して新しいaccess_token(およびオプションで新しいrefresh_token)を要求します。この場合、新しいトークンを提供するためにrefresh_tokenが古いaccess_tokenに対してどのように検証されているかを完全に理解していませんか?または、なぜrefresh_tokenを必要とするのでしょうか?
上位トピック(JWTの更新とJWTの有効期限)に関する一般的なアドバイスは参考になります。
なぜクッキーを使用しないのですか? – Kebman