ブラウザのストレージとCookieについて聞いたことがありますが、トークンを保存するための最良の安全な方法を理解できません。また、他のメソッドが存在するかどうか、またはサードパーティのライブラリが正しく機能するかどうかもわかりません。
それを行うために利用できる方法の完全なリストがあり、それぞれの利点/不便さ、そして何よりも何よりも最善の方法があればよいのですが。
トークンベースの認証では、JWTを保存する場所を選択できます。トークンはローカルストレージ/セッションストレージまたはCookieに保存することを強くお勧めします。
一般に、JWTはブラウザーのローカルストレージに配置され、これはほとんどのユースケースでうまく機能します。
ユーザー名とパスワードを使用してユーザーをログインさせると、レスポンスの本文にはaccess_token JWT
が含まれます。次に、クライアント側のコードでこの応答を処理する必要があります。このトークンは、localStorageまたはsessionStorageに保存できます。
sessionStorageを使用した例については、ここをクリックしてください
localStorage
とsessionStorage
はどちらもStorage
を拡張します。それらの唯一の違いは、データの永続性です。
localStorage
-データは明示的に削除されるまで存続します。加えられた変更は保存され、サイトへの現在および将来のすべてのアクセスで利用できます。
sessionStorage
-加えられた変更は保存され、現在のページだけでなく、同じウィンドウでのサイトへの将来のアクセスにも使用できます。ウィンドウを閉じると、ストレージは削除されます。
Cookieを使用してJWTを保存することもできます。 Cookieを設定する正確な方法は、使用しているクライアント側の言語によって異なります。
Cookieの有効期間を制御するためのさまざまなオプションがあります。
httpOnly
フラグが設定されている場合は、サーバー側のみで読み取ることができます。Referer
およびOrigin
ヘッダーをチェックすることで部分的に防ぐこともできます。元の記事: https://auth0.com/docs/security/store-tokens#how-to-implement