• 締切済み
  • 暇なときにでも

WebサーバとWebアプリケーション。セッションID、ユーザーID、パスワードを管理するのはどっち?

セッションIDを習ったとき、 私の記憶ではセッションIDを管理するのはWebサーバと習いました。 普通、このOKWaveのようにログインを要するようなWebページは ログイン時に渡されたユーザーIDとパスワードを セッションIDに紐付ける形でサーバ側で管理することによって、 このセッションIDを通して、同一ユーザーと見なすということだったと思います。 しかし、ここでひとつ疑問が出ました。 ログイン時に、「自分は誰か、正しいユーザーか」ということを通信先に教えるために ユーザーIDとパスワードを入れますよね? でもここでユーザーIDとパスワードがほしいのはWebサーバではなく、 ユーザー情報を持っているWebアプリケーションではないのか?と考えました。 しかし、私はセッションIDはWebサーバが管理すると習ったように記憶しています。 ということは、 ・セッションIDはWebサーバが管理する ・ユーザーIDとパスワードはWebアプリケーションが管理する ということでいいのでしょうか? つまり、セッションIDとユーザーIDの対応表はWebアプリケーション側で実装し、 クライアントのリクエストから呼び出されるWebアプリケーションのプログラムは 「この呼び出した相手のセッションIDを教えてください」と Webサーバに聞くようなプログラムにしなければならないという認識で合っているのでしょうか? よく分かってないので、聞きたいことが非常に伝わりにくいかと思いますが、 よろしくお願いします。 長い上、お粗末な文章を最後まで読んでいただきありがとうございました

共感・応援の気持ちを伝えよう!

みんなの回答

  • 回答No.1
  • teltel
  • ベストアンサー率48% (41/84)

基本的にはWebサーバはデータの受け渡ししかできません。 cookieなどでのセッション管理はWebアプリケーション側で実行されます。 WebアプリケーションとWebクライアント(ブラウザ)がHTTPでやりとりするためにWebサーバを介して通信しているような感じです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます。 >>cookieなどでのセッション管理はWebアプリケーション側で実行されます。 なるほど、そうなのですか。 私が質問文で書いた内容は間違っているんですね。 セッションIDについて、いろいろな書籍やWebページを見て回っても 大抵は「Webサーバ」としか書かれていないので、 ApacheといったWebサーバソフトがセッション管理を担当するのか?と、疑問になっていました。 ありがとうございました。

関連するQ&A

  • CGI::Sessionでのユーザとの紐付け方法

    【できていること】 Cookieの発行 Cookieへのデータの書き込みと参照 【ここから質問】 ログイン認証があるWebアプリケーションにおいて、セッション情報(ID)とユーザ情報はどのように紐付けているのでしょうか? (ログイン成功時に生成するセッションIDとユーザ情報の紐付け情報をどこにどのように保持するのかがわかりません) Cookie(クライアント側)はセッションIDのみを保持しておいて、サーバ側で紐付け情報を保持するのだと思うのですが、CGI::Sessionではセッション生成時に作成されるcgise_XXXXファイルに書き込むのでしょうか?(そのメソッドか、具体例があれば教えてください) それとも紐付け専用のテーブルを用意しておくのでしょうか、もしくは、ユーザ情報のテーブルにあらかじめセッション情報を格納するカラムでも用意しておくのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 指定のセッションIDのセッションを切る

    1.同一のwebアプリケーション内の違うセッションから指定のセッションIDのセッションを切る。 2.webアプリケーションにサーブレットを作成してもらい、外部からサーブレットにリクエストデータとしてセッションIDを渡して呼び出すと、渡したセッションIDのセッションを切ることができる。 3.サーブレット経由ではなくて指定したセッションIDを外部から切ることができる。 以上、3点について、方法などを教えていただけないでしょうか?

  • 複数Webサーバーでのセッション共有

    よろしくお願いいたします。 Win2003 IIS6.0上で、ASP.NetではなくASPでアプリケーションを作成しています。 Webサーバーは2台構成でロードバランサーで負荷分散されております。(どちらもIIS6.0) ロードバランサーの設定がどうなっているかはよくわからないのですが、同一ユーザーは同一サーバーに振るといった設定がなされていないようで、リクエストに応えるサーバーがリクエストのたびに異なるという現象が起こっています。 ですので、前画面と異なるサーバーがリクエストに応えたときにセッション変数の値が取得できないという事態に陥っています。当然なのですが。。。 訳あって、ロードバランサーの設定は変更できないので、IISかアプリケーション側で解決する必要があるのですが、調べていると、「State Service」なるものを発見しました。 http://www.atmarkit.co.jp/fdotnet/dotnettips/183aspsesout/aspsesout.html 本番機なのでうかつに試すわけには行かないのですが、 ASPアプリケーションのセッション管理にも「State Service」は有効でしょうか?ASP.Netアプリケーションは・・・というような説明書きでしたので、質問させていただきました。 ご存知の方がいらっしゃいましたらご教示ください。

  • WEBサーバ(solaris)でのユーザIDとパスワードの設定

    すいません。ちょっと質問させて頂きます。 ★環境★ WEBサーバOS:Solaris2.6 WEBサーバ:IPlanetEnterPriseServer4.1Sp5 NetscapeComposer4.75 ★やりたい事★ NetscapeComposerを使用して、WEBサーバにHTMLファイルをアップロード しようと考えています。NetscapeComposerでは、HTTPプロトコルを使用 してアップロードしたいです。 ★質問★ そこで、ユーザIDとパスワードを設定しなければいけないのですが、 FTPなんかでWEBサーバにアップロードする時のユーザIDやパスワード とは、違いますよね?? 最近、急にWEBサーバの管理を任されたもので、知識が少なくて、 どこで設定したらいいのか、わかりません。 設定の仕方の載っているWEBサイト、または、アドバイスよろしく お願い致します。 それか、既存の設定が何処にあるかを教えて頂けるだけでも、嬉しいです。 新規にユーザを作成しなくても、既存のユーザでもOKなので。 以上、長文になりましたが、アドバイスよろしくお願い致します。

  • セキュリティーを確保したセッション管理

    現在、javaにて開発を計画中です。 作成するアプリケーションは、 ログイン画面 ↓ ユーザ、パスワード入力 ↓ 認証(データベースに登録された内容チェック) ↓ ユーザごとに許可されたページへの遷移 といった流れを想定しています。 セッション管理を行なう上で、 Javaでは、「HttpSession」を利用して、   // セッション開始   HttpSession session = request.getSession(true);   // セッションに情報を設定   session.setAttribute("USER_ID" , xxxx);   session.setAttribute("PASSWORD" ,yyyy); といった情報をセッションに保存し、ページ移動時にチェック する事を考えました。 あとCookieを利用する方法も考えましたが、CookieにID、passwordを保存することは セキュリティー上問題あると思います。 セッション管理について説明しているページには、Cookieには、セッションIDを保存し・・・とった 記述があるのをよくみます。 セキュリティー上、Cookieを利用する意味もよく分かっていません。 みなさんは、どのようにセッション管理をされているのか教えてください。 出来るだけセキュリティーを確保したいと思っています。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Apacheでセッション管理

    スクリプトなどではなく、Apacheにセッション管理させる方法を探しています。 具体的には、たとえばログインしたユーザーだけアクセス可能なページを作る場合、通常ならスクリプトにてセッションIDをログオン時に発行、その後はセッションIDをチェックしてページを表示させますよね。 ところが、この「アクセス可能なページ」をスクリプトではなく通常のHTMLにしたいのです。 イメージとしては、Apache側でリクエストを受けた際にセッションID(CookieなりURLパラメーターなり)をチェックするような機能または外部プログラムを呼び出し、チェックOKなら何もしない、つまりリクエストどおりのHTMLを返す、チェックNGならログオンページにリダイレクトさせる、というようなものです。 mod_ext_filterを使って「セッションチェックプログラム」を呼び出すようにすればできそうに思うのですが、問題はApacheのバージョンが2.0.46のため、ExtFilterDefineにてmode=inputが使えないのです…。 代わりになるようなモジュール、あるいは代替案、というより一般的にこのようなケースではどういった方法がとられるのでしょう。 御教授のほどよろしくお願いいたします。

  • 二人でWEBアプリを動かしているとセッションが切れる

    Windows2000 + SQLServer2000 + IIS5.0 + VBScriptで開発を行っています。二人で開発しているのですが、作成したアプリケーションを同時に動かしている時に、セッションが切れてしまう現象が頻繁に発生します。 このWEBアプリケーションは、ユーザIDとパスワードでログインするとSESSION変数に値を入れます。すべてのページにログインチェックのコードを埋め込んでおり、SESSION変数に値がないとログインのエラーとします。 一人で動かしているときには、20分程度の放置でセッションが切れてログインエラーとなるのですが、二人で同時にログインして動かしていると、2分程度でログインエラーとなってしまいます。 イベントログを見ても気になるエラーは発生していないように思われます。原因としてどのようなものが考えられるでしょうか。 よろしくお願いいたします。

  • struts2でのフィルターを使ったセッション管理

    はじめまして。 struts2,spring frameworkでソフトを作ってますが、セッション管理について質問があります。 1.ログイン画面で、ログイン後にセッションidを登録する。 session.setAttribute (USER_HANDLE, user); 2.他の画面に移動する時に、セッションid(user)が格納されているか確認する。格納されていない場合は、ログイン画面に戻る。 という処理をする場合、actionごとに HttpSession session = request.getSession (true); Object user = session.getAttribute (USER_HANDLE); if (user != null) { //処理1 return true; } else { //処理2 return false; } と記述すると手間がかかるので、下記の様なFilterでまとめて管理できないかと考えているのですが、こういう考え方は一般的なのでしょうか? public class TestAccessFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST); HttpSession session = request.getSession (true); Object user = session.getAttribute (USER_HANDLE); if (user == null) { //処理1 return "login-success"; } else { //処理2 return "login"; } } actionごとにセッションidが格納されているか確認する代わりに、Filterでまとめて確認できないかということなのですが.... struts2でこういう書き方をして良いのかわからず困っています。 アドバイスをお願いいたします。

    • ベストアンサー
    • Java
  • webアプリケーション開発の考え方

    卒業課題としてデータベースを利用したwebアプリケーション開発を始めたのですが、考え方というか開発手順がよく分かりません。 IDとパスワードを入力してログインし、従業員一覧から各ページに遷移していくというものです。私はこの一覧の制作を担当していますが、ログイン処理をしてリクエストセッションにデータを保存して…というところまではいいのですがそれ以外に必要な処理が分かりません。 MySQL1.5+eclipse3.1です。 漠然としていますが、ご教授いただけますようお願いします。参考になるサイトでも結構ですのでお願いします。

    • ベストアンサー
    • Java
  • セッション管理について

    web開発をしております。 セッションのことについて質問です。 例えば、 javaのspringではアノテーションでセッションを管理できたりしますが、セッションタイムタアウトの時間はapacheで設定できたりします。 セッションというのは、プログラム言語とサーバーのどちらで管理しているのでしょうか

    • ベストアンサー
    • Java