- PR -

セッションが取得できない

投稿者投稿内容
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-02-06 10:21
>jdk1.3.1 を使用しています。
JDKはサーブレットコンテナではありません。サーブレットコンテナってのはTomcatとかWebLogicとかのことです。
もも
会議室デビュー日: 2005/11/30
投稿数: 17
投稿日時: 2006-02-06 11:38
>同じセッションを参照しているかどうか調べるため、isNew() とか getId() をダンプ
>してみてはいかがでしょう。

★ https → http ///////////////////
サーブレット(1回目)
isNew:false
getId:1ED22609FCB76B17C6477BF1FCDDEB31
ログインクラス(1回目)
isNew:true
getId:5A3553D19194200DA4DF5973EA53DC7A
サーブレット(2回目)
isNew:false
getId:5A3553D19194200DA4DF5973EA53DC7A
ログインクラス(2回目)
isNew:false
getId:5A3553D19194200DA4DF5973EA53DC7A
//////////////////////////////

★ http のみ///////////////////
サーブレット
isNew:false
getId:FE9D0383CDFB206518E89B4831A093DB
ログインクラス
isNew:false
getId:FE9D0383CDFB206518E89B4831A093DB
//////////////////////////////

でした。
サーブレットコンテナは
Tomcat 4.1.31です。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-02-06 13:11
つまり取得しているセッションが異なるということですね。
もも
会議室デビュー日: 2005/11/30
投稿数: 17
投稿日時: 2006-02-06 13:33
https → http にするとセッションが引き継げないと言うことでしょうか?
この場合どのような対処が考えられるでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-02-06 13:36
うーん、そんなことないと思いますが。
クッキーにsecure属性が関係あるかもしれません。
ダンプしたことで何がわかるか考えてみてください。
もも
会議室デビュー日: 2005/11/30
投稿数: 17
投稿日時: 2006-02-06 14:39
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=12&topic=24503
調べてみると同じ質問がありました。

他にもサイトで
>>サーブレット リクエストが HTTP と HTTPS の間で切り替わると、
>>新しいセッションが作成されることになります
と書いてあるました。

WebLogicでは
<session-descriptor>
 <session-param>
  <param-name>CookieDomain</param-name>
  <param-value>mydomain.com</param-value>
 </session-param>
</session-descriptor>
で設定できるようなので、Tomcatでも調べてみたいと思います。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-02-06 15:11
HTTPSの時にセッションのクッキーにセキュア属性がついていることで今回の現象が発生しているのだと思いますが、意味なくつけているわけではないと思うので注意してください。
闇雲にセキュア属性を付けないような設定にすると、 HTTP で通信している際に盗聴したセッションIDで第三者が好き勝手できてしまう可能性があります。

たとえば WebLogic Server だとセッションIDを盗聴されてもセキュリティ制約の制限を宣言してあるページに第三者がアクセスできなくする仕組みがあったりします。
http://edocs.beasys.co.jp/e-docs/wls/docs81/config_xml/WebServer.html#AuthCookieEnabled
この仕組みを使うとHTTPSでログインした際、セッションIDとは別のログイン済みであることを確認するためのセキュア属性のついたクッキーを追加で発行します。HTTP<->HTTPSでセッション双方向にセッションの持続を可能にすると共に盗聴によるsecurity-constraintで宣言したページへの第三者のアクセスを防ぎます。

このような仕組みを用意していなければ HTTP へ後戻りしてもセッションを持続させようとするのは少々危険ですので注意してください。
もも
会議室デビュー日: 2005/11/30
投稿数: 17
投稿日時: 2006-02-06 19:06
ご教授ありがとう御座います。

セッションでセキュリティを変更してページの移動をするか、DBにセッション情報をもたせてしまうか...
Tomcatの設定、クッキーのセキュア属性、詳しく調べてみたいと思います。

スキルアップ/キャリアアップ(JOB@IT)