buttons icon indicating copy to clipboard operation
buttons copied to clipboard

localStorage に accessToken を保存していることについて

Open ampcpmgp opened this issue 5 years ago • 4 comments

以下の参考ページを読んでいたところ、
https://auth0.com/learn/json-web-tokens/

JWTの取り扱いについて

You also should not store sensitive session data in browser storage due to lack of security.

と言う記述があり、 kt3k/buttons では localStorage に保存していたので気になりました。

https://github.com/kt3k/buttons/blob/376a16ca354aa3f02388126b0ae10dfa46c5c97d/frontend/util/web-auth.js#L24

念のため見ていただけると幸いですm(__)m

ampcpmgp avatar Feb 21 '20 14:02 ampcpmgp

そうですね, httpOnly cookie などに入れた方が良いですね. XSS があった場合に localStorage だと取られてしまうので

kt3k avatar Feb 21 '20 17:02 kt3k

↓を読んでたら、そもそも JWT を(バックエンド等のサーバー保護のための)認証として使うことは、意図したものではないようで、新しい @auth0/auth0-spa-js では利用できないようになってました。 https://community.auth0.com/t/getting-the-jwt-id-token-from-auth0-spa-js/28281

提供された別な accessToken を、以下のようなAPIを使って subject claim を取得する感じだと思います。 https://auth0.com/docs/api/authentication#get-user-info

結構ハマったので共有までに置いておきます 🙇

ampcpmgp avatar Feb 23 '20 11:02 ampcpmgp

昔は auth0 のチュートリアルでも localStorage に入れていた気がしますが, JWT に対する議論が色々あって変わったのかもしれないですね.

(コード検索すると上のとほぼ同じことやってるコードがたくさんあります. https://github.com/search?q=localStorage+setItem+access_token+auth0-js&type=Code

kt3k avatar Feb 23 '20 13:02 kt3k

そういうことだったんですね、、欲しい情報を見つけるのに苦労しました・・。

ampcpmgp avatar Feb 23 '20 14:02 ampcpmgp