5

認証が必要なアプリを作成していますが、ユーザーがリモートでログアウトできるようにしたいのではないかと心配しています。JSON Web トークンを使用して、ブラックリストに登録したり拒否したりできる方法はありますか? それらの利点がステートレスであることは理解していますが、リモート ログアウトがあると便利です。

編集: Express-jwt モジュールを使用する Express.js では、tokens を取り消す方法があります。また、モジュールexpress-jwt-blacklistがあります。これらの戦略がどのように機能するのかまだ理解できていません。現時点でのベスト プラクティスを知りたいと考えています。

4

1 に答える 1

3

JSON Web トークン API キーのブラックリスト化に関する Auth0 に関する素晴らしい記事があり 、JWT API キーをブラックリストに登録して無効にする方法について、実際の良い例を示しています。あなたはそれを読むべきです。

問題の枠組み

JWT のブラックリスト登録をサポートすると、次のような問題が生じます。

  1. JWT はどのように個別に識別されますか?
  2. JWT を取り消すことができるのは誰ですか?
  3. トークンはどのように取り消されますか?
  4. オーバーヘッドの追加を避けるにはどうすればよいでしょうか?

このブログ投稿は、API v2 でこの機能を実装した経験を活用して、以前の質問に答えることが目的です。

この記事では、各ポイントを分割し、それを達成する方法についていくつかのサンプル コードを示し、次のように締めくくります。

前述の内容のほとんどは、JWT API キーだけでなく、一般的な JWT のブラックリスト登録に適用されます。

このブログ投稿が、この問題への対処方法に関する有益なアイデアを提供してくれることを願っています。

私は個人的に同様の方法論を適用して、トークンがセッション ID と同様に使用され、Cookie に保存された複数のサインインを無効にしました。ユーザーが他のすべてのアクティブなセッションを表示し、必要に応じてそれらを取り消す (リモート サインアウト) ことができる GitHub プロファイル セクションのようにモデル化しました。

ベスト プラクティスに関する限り、そのトピックはむしろ意見に基づくものになると思います。しかし、私は Auth0 を、多くの人が経験を積んだこのトピック領域の優れた実践の源と考えています。

アップデート:

npmでトークンをブラックリストに登録するためのこのExpress-jwt プラグインを見つけました

于 2016-04-09T07:32:00.593 に答える