endless pulse

どっくんどっくんふるえる毎日を過ごしています

仮想環境でセッションクッキーがうまく作れない事象/FreeBSD 10.0で時刻合わせ

こんにちは、えみーです。

前回の記事(Play framework 2.3 for Scalaで、認証してみる - endless pulse) でPlay framework 2.3でログインを作ってみた話を書いたのですが、仮想環境上でログインがうまくできないという事態が発生して解決したのでそのメモです。

仮想環境は、Vagrant+FreeBSD 10.0。

 

事象

仮想環境上で動かしたWebアプリケーションで、
ログインするために、正しいユーザ名+パスワードを入力しても、
またログイン画面が表示される…。(=>つまり、ログインしないで認証が必要な画面の表示を行ったときの動き)
ローカル環境(Mac OS X Yosemite)では再現しない。

原因

いろいろ試してみたところ、セッションクッキーの有効期限が現在時刻より前になっていることがわかった。
ローカルでは再現しないので、仮想環境上の時刻を調べてみた(dateコマンド)ら…
2日前!

修正

以下のページを参考にNTPサーバから正しい時刻を取得し修正。
正確な時間を取得する (ntpdate)
ページはFreeBSD 6.X、7.X向けと書いてあるけれど、FreeBSD10.0でも同様の修正でうまくいきました。

コマンド(即時)

$ ntpdate ntp1.jst.mfeed.ad.jp

起動時に時刻を取得し修正するため、以下を修正。
/etc/rc.conf

ntpdate_enable="YES"
ntpdate_flags="-b ntp1.jst.mfeed.ad.jp"

毎時間0分に時刻合わせ。
crontab

0    *    *    *    *     /usr/sbin/ntpdate ntp1.jst.mfeed.ad.jp

原因の原因

そもそも何で時刻がずれてたかというと、
仮想環境を動かしたまま、ホストのMacをスリープさせていたせいのようです。
気づいてみれば当たり前なんだけど、ほんとうに気づかなかった。
今後気をつけたい。。