パスワードリセット機能のために使い捨てのJWTトークンを発行し、それをステートレスに保つ方法を理解しようとしています。出会った JWT付きのシングルユーストークン これは基本的に、現在のパスワードのハッシュを含めることを提案し、パスワードが正常に変更されると無効化されます。
JWTにパスワードハッシュを含めることに不安があるので、少し調べて JWT ID仕様 を見つけましたが、トークン検証でチェックできるようにIDをどこかに保存する必要があります。
だから私の質問は、電子メールで送信されるパスワードリセットリンクトークンに現在のパスワードハッシュを含める場合、セキュリティ上の懸念は何ですか?
パスワードを使用する代わりに、JWT IDを使用して、データベースのどこかに列として追加する方が良いでしょうか?
私は自分のセキュリティを導入するのをためらっていますが、ここでそれを楽しむためだけに考えています。
パスワードハッシュを含める代わりに、JWTを生成するときに次のプロセスに従います。
パスワードリセットリクエストを検証するには:
この方法では、パスワードハッシュを公開せず、シークレットキーをブルートフォースすることなくブルートフォースすることはできません(何百万年もかかります)。また、タイムスタンプを埋め込むことにより、再利用からハッシュを除外します。