• ベストアンサー

Weblogicのセッションについて

Weblogic10.0.3にてWebアプリケーションの 開発を行っていますが、解決しない問題があり 質問させていただきます。 現在、ログイン画面にてユーザーIDとパスワードを 入力してログイン後各処理を行うアプリを開発していますが、 ログイン時のユーザー情報をセッションに保持する作りに していますが、ログイン時にjsessionidがURLに 表示されてしまいます。 (例:http://testserver:9000/TestApp/Test.do;jsessionid=vFqyK3xMrJ9QCLJnW0X0r2w17ylBVhhD2VQT4qGwdMsGvhnZHdJQ!-425034523) 一度ログインするとそのブラウザを閉じるまでは、画面遷移をしても 何度ログイン・ログアウト処理(セッションの生成・削除)を 行っても二度と表示されません。 (画面遷移はStrutsで制御しています) セッションIDをCookieに保持する方法もあるようですが、 なるべくCookieを使いたくないので、セッションに保持するように したいのです。 web.xml、weblogic.xml、Weblogicサーバーの設定などで セッションIDを表示しなくなる方法がありましたら 教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yamadamn
  • ベストアンサー率100% (2/2)
回答No.2

>Weblogic10.0.3にてWebアプリケーションの WebLogic10.3でしょうか? 10.0 MP3は現時点では存在しないはずなので。 >セッションIDをCookieに保持する方法もあるようですが、 >なるべくCookieを使いたくないので、セッションに保持するように >したいのです。 なんか矛盾しているような。。 「セッションIDをCookieに保持する」ではなく「セッションをCookieに保持する」でしょうか? 一応、上記の前提で回答すると、weblogic.xmlで session-descriptorのurl-rewriting-enabledをfalseにしてみては如何でしょう。 蛇足ですが、WebLogicに特化した質問だったら、OTNの掲示板のほうが回答が付きやすいかもしれません。 http://otn.oracle.co.jp/forum/forum.jspa?forumID=59

参考URL:
http://otndnld.oracle.co.jp/document/products/wls/docs103/webapp/weblogic_xml.html#wp1071982
ten_oh
質問者

お礼

ご指摘いただいたようにweblogic.xmlを 修正したら表示されないようになりました。 ご回答ありがとうございました。

その他の回答 (1)

  • Lchan0211
  • ベストアンサー率64% (239/371)
回答No.1

http://www.atmarkit.co.jp/fjava/onepoint/weblogic/weblogic01.html を参照してください。 セッション管理をするには、なんらかの方法でブラウザに セッションIDを送付し、ブラウザからの次のリクエストで そのセッションIDを伝えてもらう必要があります。 その1つの方法が、Cookieを使う方法で、 もう1つの方法が、URL rewritingです。 そして、質問にある通りURLの中にセッションIDを埋め込む方法が、 URL rewritingです。 つまり、CookieまたはURL rewritingのどちらも使用せずに セッション管理をする方法はないと思います。 安全なセッション管理を実現するために、 http://www.atmarkit.co.jp/fsecurity/rensai/struts04/struts02.html http://www.atmarkit.co.jp/fsecurity/rensai/struts04/struts03.html を理解することをお勧めします。

関連するQ&A

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

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

    • ベストアンサー
    • Perl
  • セキュリティーを確保したセッション管理

    現在、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
  • サーブレット sessionスコープに関して

    こんばんは。 『sessionスコープはPCごと』に関しての質問なのですが、 (http://www.atmarkit.co.jp/fjava/rensai3/tomcat09/tomcat09_02.htmlから抜粋) ログイン後、ユーザ名をsessionに保持し、どの画面に遷移してもユーザ名が表示されるシステムで、 同一PCの2つのブラウザから別ユーザでログインしても、きちんとユーザ名が識別できその後も識別したまま操作できます。 なぜ、このような現象が起こるのでしょうか? 私は、『1PC = 1Session』なら後からログインしたユーザ名でsessionデータが上書きされると思っていました。 req.getSession().setAttribute("userName", form.getUser()); このソースは、sessionIDで識別し取得したsessionスコープにform.getUser()をuserNameという名前でバインドする。という感じですよね? 『1ブラウザ = 1session』なのでしょうか? ※1ブラウザとは子画面も含みます。以下↓ yahooなどでリンクを押して別画面に派生する場合は、別ブラウザが立ち上がってもログイン名が出るので、同一sessionだなと思います。 間違っていますか?

    • ベストアンサー
    • Java
  • セッションの削除

    例えば www.hoge.com/foo/index.php で session_start(); setcookie("bar",session_id(), time()+3600); として画面遷移を行いながら登録作業を行い、 完了画面regist.php で session_start(); $_SESSION = array(); if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000); } session_destroy(); としましたが$_COOKIE["bar"]が初期化されません。 どのようにしたら良いでしょうか? 教えてください。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • Sessionがnullになりません。

    下記の環境でWebアプリケーションを開発しています。 java 1.5 eclipse 3.3 tomcat 5.5 ある画面Aは検索ボタンを押して結果一覧を表示したり、 結果一覧の詳細を知るためにリンクを押して、ポップアップ画面Bを表示したりします。 web.xmlに <session-timeout>10</session-timeout> と記述し、10分でタイムアウトとしています。 Servlet処理の最初で request.getSession(false) によりセッションを取得し、nullであればタイムアウト画面に遷移させています。 結果一覧を表示した後、10分間何もせずに画面Bを表示しようとすると ポップアップの画面はタイムアウト画面で表示されます。 Servletにブレークポイントをつけて確認したところ このときのrequest.getSession(false)の結果はnullでした。 タイムアウト画面を×ボタンで閉じ、A画面内で検索ボタンを押したところ、 request.getSession(false)の結果はnullではありませんでした。 ただし、session内にsetAttributeしていたBeanが全てnullになっており、 その後の処理で例外が発生してしまいました。 なぜ検索ボタンを押したところで sessionがnullになっていないのでしょうか?

    • ベストアンサー
    • Java
  • セッションが正しく更新されない??

    セッションが正しく更新されない?? 1.2つの画面(どちらか)を表示するphpファイルのところでセッションを1に設定する。 2.ある画面を表示しボタンを押すとある処理を行うと同時にセッションを99にする。 3.1.の画面のどちらかに遷移する。(この時点でセッションは1) 4.2の画面を表示する。(処理は行わないのでセッションは99にならず1のままのはず) …なのにセッションが99になっている。。なぜなのでしょうか? どなたかご回答をお願い致します。

    • 締切済み
    • PHP
  • phpのセッションについて質問です

    現在、phpのセッションについて学習しています。 開発環境はxamppでMySQLデータベースにPDOで接続しています。 セッションについていくつか質問があります。 セッションを使った認証の流れですが、 ログインフォーム画面で、session_start()し、ログインの認証が成功したらsession_regenerate_idで新しいセッションを発行⇒ログインが必要な画面でセッションの有無を確認 という流れで良いのでしょうか? セッションハイジャック対策にsession_regenerate_idをするようですが、 これは全てのページで毎回行ったほうが良いのでしょうか? セッションIDの受け渡しはcookieに保存する方法とURLに含む方法があり、 セッションハイジャック対策について記述しているサイトではcookieが推奨されている雰囲気ですが、 PHPマニュアル(http://php.net/manual/ja/session.idpassing.php)では信頼性がないとあります。 どちらを使うのが良いのでしょうか? セッションの有無のチェックはsession_start()を記述するだけでサーバーが行ってくれるのでしょうか? $SESSIONにセッションIDを保存してissetで調べるといった記述が必要なのでしょうか? メールアドレスとパスワードでのログイン認証を実装したいのですが、 その場合、マイページでユーザー情報を表示したい際、ログイン時に入力したメールアドレスを$SESSION[email]に格納し、マイページのphpプログラムにて、$SESSION[email]に格納されたメールアドレスを検索条件にしてSELECTで他の情報を取得したら良いのでしょうか? メールアドレスを$SESSION変数で受け渡しするのはセキュリティ上危険でしょうか?(危険であれば内部管理用のユーザーIDを$SESSIONに格納してデータを取得しようと思います。) 基本的なセッションの知識がないため、質問の数が多くなってしまいましたが、 答えられる範囲で良いのでご回答頂けると有難いです。

    • ベストアンサー
    • PHP
  • セッションの扱い

    VB.NET2005で開発しています。セッションIDをログイン時に保存しているのですが、このセッションIDはその他の画面でまた再発行を繰り返していかないと、保存したセッションIDは既定時間で消えてしまうのでしょうか?

  • セッションIDについて

    セッションIDについて ASP.NETで開発しています。 セッションフィクセーション対策でログイン画面で初期表示のみセッションを削除しています。 「ログイン」ボタンを押して、Postbackされる時にセッションIDが再発行されます。 ここまでの流れはいいのですが、もう一度「ログイン」ボタンを押下すると 一回目の「ログイン」ボタン押下時に再発行したセッションIDが、二回目の「ログイン」ボタン 押下時にも再発行してしまいます。 私は一回目のPostback時にセッションIDが再発行されたら、 それ以降のPostback時は既存のセッションIDを使用する動きを予想していました。 なぜ二回目以降のPostback時にもセッションIDが再発行されてしまうのでしょうか? ご存知の方がいましたら教えていただけないでしょうか。

  • セッションが切れないのは何故?

    画面にログインして操作中、セッションが切れた場合にまたログイン画面を表示するという処理のテストをしています。 タイムアウトまでの時間が24分となっていたので、画面にログインした状態でPCに触らず放置していました。 30分程度放置した後に次の処理に移るためのsubmitボタンをクリックしたところ、セッションは切れず処理が続行されてしまいました。 何故セッションは切れなかったのでしょうか? タイムアウトさせるには何か特別な処理を行わなければいけないのでしょうか? アドバイスをお願いいたします。

    • ベストアンサー
    • PHP