web-dev-qa-db-ja.com

認証トークンをクライアント側に保存するためのベストプラクティス

ユーザー2FAが認証を行い、JWTをクライアント側に戻すフロントエンド/バックエンド分離システムを構築しています。

私はangularを使用しており、今のところ、そのトークンを$ window.sessionStorageに格納し、それをすべてのリクエストのヘッダーに含めて、ユーザーを識別/承認/認証します。

クライアント側でこのトークンをより安全なストアはありますか?現在、ログアウト時に主要なクライアント側を削除し、データベースで無効に設定しますが、ユーザーがブラウザーを離れた場合、トークンの有効期限が切れるまで(現時点で6時間有効)保証はありません。

このスレッドまたは他のスレッドについての考えは、すでにそれに答えているので非常にありがたいです。

5
bclark8923

サーバーにアイドルタイムアウトを実装し、一定の時間(たとえば10分間)アクティビティがない場合は、セッションに期限切れのマークを付けることができます。

1
Sunil Agrawal

[編集済み] JWTはステートレスアプリケーションを認証するためのものであり、セッション用ではありません。たとえば、個々のトークンを無効にする無効化メカニズムを構築する必要があります。これは、セッションベースのアプリケーションを使用している場合に必要な機能です 1 。 JWTを保護するためのベストプラクティスは、OWASP JWTチートシート で説明されています。安全な保管のために、次のことを考慮する必要があります。

  • JWTをcookieとしてではなく、sessionStorageコンテナに格納します。
  • トークンを使用する場合は、JSを使用してトークンを「所有者」として追加します。
  • トークンをフィンガープリントして、サイドジャック攻撃を防ぎます。
0