« 演出とかを組む話 | メイン | リアルタイム - ツールの話 »

2007年09月21日

mixi Alert 開発日誌:: セッションの共有

    

mixi の仕様が変更され、2重ログインが禁止されるようになった。
例えば、Firefox でログインした後、IE でログインすると、Firefox 側はログアウトされてしまう ( 異なる PC でアクセスした場合もログアウトされるはず )
つまり、mixi Alert を使っていて、ブラウザを Firefox にしていた場合、mixi Alert が更新をチェックするたびにログアウトされてしまい、使い物にならない。
mixi Alert は、Win32 Inet を使用してアクセスしているので、IE を使っている場合は問題ない ( ただし、Vista の場合は IE と他でクッキーが分離されているらしく、Vista では問題になる )

IE は使いたくないので対処法を考える。
1. IE のクッキーを Firefox にコピー
2. Firefox のセッション情報を使って mixi にアクセス
3. Firefox のクッキーを IE にコピー

1の場合、Firefox のクッキーファイルを書き換えるタイミングの問題や IE 基準となっているところがよろしくない。いつも Firefox を使っているので、2 か 3 の方法がよさそうだ。
ということで、まずは 2 の方法を取るべく HttpSendRequest にクッキー情報を渡すがなんかうまくいかない。
仕方なく、3. の方法 InternetSetCookie を使ってクッキーを上書きしてしまうことにした。
いろいろと試行錯誤したところ、クッキーのすべてを渡すとどうもうまくいかないらしく、必要なもののみにしないとうまくいかないようだ。
で、そのようにしたらうまく動くようになった。

ということで、Firefox が使われる設定になっていた時、Firefox のセッションが使われるようになった。
ただ、Vista の問題は残る。
Vista で IE のクッキー取得とか出来るのかなぁ。
そもそも、Vista 持っていないのですぐには対応できないのだが。

この仕様変更は複数人での ID 共有を排除する目的で設定されたのかもしれないが、少し知識があればまったく意味がない ( 少なくとも今の私は簡単に突破できる ) 。
でも、普通の人にはそれなりに効くのかな?
セキュリティの向上を考えるのなら、使い勝手は落ちるがずっとログイン状態を維持する設定を何とかしたた方が良いと思うのだが、ID 共有の方が問題になっているのだろうか?
ま、私は普通に使うことが目的なのでどうでもいい話だが。

そうそう、通常使うブラウザの判定はこの辺に書いてある。
要は、レジストリの "HKEY_CLASSES_ROOT\http\shell\open\ddeexec\Application" を見て、以下のどれかで判定する。
・iexplore(またはIExplore)を含む文字列が設定されていたら、Internet Explorer
・firefox(またはFirefox)を含む文字列が設定されていたら、Firefox
・opera(またはOpera)を含む文字列が設定されていたら、Opera



投稿者 Takenori : 2007年09月21日 15:00




comments powered by Disqus
Total : Today : Yesterday : なかのひと