最近SPAアプリの勉強を始めて、ユーザー認証の方法として、JWT(JSON Web Token)があることを知りました。
1つチュートリアルをこなして感じたのですが、これって本当に良い方法なのでしょうか?
https://ja.wikipedia.org/wiki/JSON_Web_Token
そのチュートリアルは、上記の「使用」にあるような、Tokenを返してlocalStorageに保存させ、認証が必要な問い合わせには Authorization: Bearer <Token> ヘッダーを付けてリクエスト。サーバー側でTokenを判定する...。
という流れのものでしたので、王道的な方法なのだと思うのですが、私が疑問に感じたのは以下の点です。
- 従来のような、Sessionを使った認証でも問題ないのでは?
ログイン時にSessionIDを払い出してlocalStorageに保存させ、認証が必要な時に独自ヘッダーなりでSessionIDを送りつけてサーバー側で照合すれば、従来のCookieを用いるような認証と同じことが実現できるんじゃないかと思ったのですが違うのでしょうか。
- JWTでの認証メリット
仮に1番の内容が正しいとしたら、JWTでの認証をするメリットは何でしょうか?
Sessionを用いた方法だと、ファイルなりDBなりにSessionの中身(つまり認証情報)を保持することになるが、JWTではPAYLOADの中に認証情報を詰め込むからサーバーが保持しなくて良いから楽だ、みたいな話でしょうか。
- JWT自体の安全性
https://jwt.io/
チュートリアルの中で上記URLに発行されたTokenをペーストして、「SIGNATUREを変えて見ましょう。自分がサーバーで設定した値にしないとTokenが一致しませんよね?」みたいなことをやっていたのですが、私が気になったのは「PAYLOADの中身丸見えじゃないか」ということです。
こんな簡単に中身が見えるものに認証情報を含めてしまって大丈夫なのでしょうか。
以上3点です。
よろしくお願いいたします。
合わせてついでに、と言っては失礼ですが、
0. Cookie & Session
0. JWT
この他に、ユーザー認証を実現する方法として何が考えられますか?
まずは自分で調べてみますので、キーワードだけでもご提示いただけたら幸いです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/01 10:15