JSON Web Tokens について読んでいて、いくつかの疑問が頭に浮かびました。セッションベースのアプローチから JWT に移行する方法について、多くの主張を読みました。私は、UI とモバイル用の API を公開する Node JS バックエンドの観点から、より多くのことを考えています。
主張: JWT では、http 要求ごとにキー値データ ストアと通信する必要はありません。
質問 1 : すべてのユーザーに対して単一の秘密鍵を持つことはできません (秘密鍵が 1 つしかない場合のセキュリティ リスクは何ですか?)。とにかくDBが必要です。
クレーム: JWT はすべてのリクエストでトークンを送信します。したがって、セッションに「name,email」などのデータを保存する必要はなく、トークン自体に存在できます。
質問 2 : ペイロードはリクエストごとに送信され、データも含まれているため、ペイロードのサイズは大きくなりませんか?
Claim : Web UI Auth だけでなく、モバイル認証にも同じ方法を使用できます。
質問 3 : サーバーはトークンを復号化してサーバーと通信する必要があるため、Web UI のオーバーヘッドではありませんか?
Claim : JS にトークンを渡し、トークンを sessionStorage または localStorage に保存します。
質問 4 : sessionStorage には「httpOnly」という概念がないため、セキュリティ上の懸念はありませんか? また、Chrome プラグインは、トークンを取得してログインすることでセキュリティを回避できますか?
最後に、CRSF の問題を除けば、UI と Mobile Auth の間でコードを共有し、CSRF にメリットをもたらしますが、現在のセッション ベースのメカニズムよりも大きなメリットはありません。私の考えは正しいですか?
また、従来のセッションベースのシステムと比較した場合の JWT の欠点は何ですか?