JWTについて調べている過程でJWTは認証に使っても良いがセッション管理に使うには注意や考慮すべきことが多く推薦されないと複数の記事で説明がされていました。(ただし、それらの記事では認証とセッション(管理)の違いについての説明はなし)
自分は認証とセッション管理をほぼ同義と今まで認識していたので、これら2つの関係がよくわからなくなってしまいました。
セッション管理は認証を包含するものなのかと思っていたのですが、認証単独で存在し得るということなのでしょうか?
認証はログインの入り口部分で、セッション管理はログイン状態を維持する部分(その他、カートに入れたものを保持するなど)ということなのでしょうか?
そうだったとしたら、例えば、認証サーバーとAPIリソースサーバーが別々にあり、ReactなどでビルドされたフロントエンドWebアプリがあった場合のログインの流れとしては、まずログインフォームから認証サーバーにリクエストを投げて、認証されればJWTトークンがフロントに返されて、それをブラウザーの例えばCookieに保存し、以降、そのトークン情報を添えて、APIリソースサーバーにリクエストを投げることになると思うのですが、これとは別に従来のような方法でログイン時にバックエンドでセッションIDをフロントにかえして、それを使って以降、セッション管理を別途行うということになるのでしょうか?
それなら従来の方法でJWT使わずセッション管理すれば良いように思えてしまいますが、こうする必要があるのは、認証サーバーとAPIサーバーがこの例の場合、分かれているからということになるのでしょうか?
まとまりの悪い質問になってしまっているので、完結に質問内容をまとめますと、以下の2点になります。
- 認証とセッション(管理)の違い、もしくは関係性についてご教示頂きたいですm(_ _)m
- 文章が斜体で装飾されている部分の自分の認識が合っているのか、間違っているのか、間違っている場合、正しい認識はどういうものなのかをご教示頂きたいですm(_ _)m
修正依頼への対応
質問者さんの言う「セッション管理」の定義を明確にしていただけませんか?
自分の定義が正しいかどうか分からないのですが、自分のイメージでは「セッション管理」とは、「ある一定期間中に発生する同一人物からのリクエストを、バックエンド側が同じユーザーからのリクエストであると判別し続ける仕組み」なのかなと思っています。その仕組を利用してショッピングサイトではカートの中身を保持したり、アクセス解析では同一ユーザーの行動ログをレポートにまとめたりできると思いますが、特に今回の質問の文脈では、この最低限の定義でひとまず十分かなと自分は思いました。
回答2件
あなたの回答
tips
プレビュー