mixiをユーザ認証に使えるか(工夫次第で使えるかも)
MovableTypeでコメントを投稿する際に、ユーザ認証に使われているtypekeyは、以下の流れで認証を行う。
- プログのコメント欄にある”サインイン”リンクをクリックする
- typekeyのサイトでサインインする
- MovableType側に用意されているtypekey認証用のエンドポイントへリダイレクトされ、認証されたユーザの情報がパラメータとして渡される
- MovableTypeが設置されているドメインでユーザ情報を格納したクッキーが発行される
ようするに、アクセスしているのが誰なのかを知っているtypekeyのサーバが、MovableTypeに用意されているエンドポイントに、ユーザの情報をパラメータにつけて送ってくれるということだ。
基本的には、アクセスしているのが誰かを知っているサービスがあって、それと通信することができれば、任意のサービスをユーザ認証に利用することができる。もちろん、認証用でないものを無理矢理使うので使い勝手の問題は出てくるけれども。
mixiをユーザ認証に使うとして、最も簡単なのはあしあとをそのまま認証に使うことだ。
- ブログにコメントする前にmixiにログインしてもらう
- あしあと回収用のプロフィールにアクセスしてもらう
- ブログにコメントが投稿された時に、サーバのスクリプトでmixiのあしあとを見に行って、誰の投稿かを確認する
この方法は、あしあとをつける行為をした人(認証のためのリクエストを出した人)を区別しないため、たまたま通りすがりであしあとをつけた人を認証したい人とを間違って認証する可能性がある。
認証リクエストそれぞれを区別するには、リクエストを識別できるなにかを付加する必要がある。スマートではないが、特定の日記に対してユーザを識別可能な文字列をコメントとして書いてもらうようにする。
- プログにコメントする前にmixiにログインしてもらう
- あしあと回収用の日記に指定した内容をコメントしてもらう
- ブログにコメントが投稿された時に、サーバのスクリプトでmixiの日記コメントを見に行って、誰の投稿か確認する
理論的にはこれでmixiを使って誰が投稿したかを知ることができる。
実際には、そもそも認証用ではないものを使って認証しようというのだから、インターフェイスが適していないのでひねりが必要だ。
少し試したところ、コメントの投稿時にrefererをチェックしたりはしない。なので、ブログ側でコメント用のHTMLを用意しておいてボタンを押してもらえば特定の文字列を日記にコメントしてもらう、という部分は簡単にできる。ただ、投稿の確認画面は出るので確認画面で再度ボタンを押してもらう必要はある。
mixiにコメントを投稿するのが完了したかどうかは、投稿に使うウインドウをiframeで表示し、そのURLを監視することで調べることができる。よって、URLが投稿完了画面に遷移したかどうかを調べて、ブログ側に戻ってくることが可能だ。うそ。firebugだとアクセスできるけどクロスドメインだとURLを読み出すこともできませんでした。でも、変化したかどうかは確認可能。
var uri = window.frames[0].location;
while( uri == window.frames[0].location ) {
...
}
というのは、保護されたデータ同士で比較するだけで中身を読み出すことがないため機能する。同じように比較するのでも
while( uri == "http://mixi.jp/add_comment.pl?diary_id=296341083&owner_id=26756" ) {
...
}
というのはNG. 任意の文字列との比較を許すと結果として間接的にuriの文字列を割り出すことができるため。このへんのセキュリティの話はオライリーのJavaScript本に書いてあります。
文字ではどんなものかわからないのでとりあえずモックを作ってみますよ。
*
というわけで作ってみました。mixiauthは、ブログのコメント投稿時にmixiの特定アカウントの日記にコメントをつけてもらうことで、ユーザの認証を行うのをイメージしています。ブログにコメントを投稿しようとすると、認証としてmixiにコメントを投稿することをうながし、mixiを開いたoframeでページが遷移したのをjavascriptで検出したら、ブログのコメントを自動的にsubmitします。
そしてmixiへ認証としてつけられたコメントを見に行って、だれがコメントしたのかを確認することでブログ側でmixiのユーザ情報と結びつけることができます。アタマの中で考えていたよりも流れはスムース。ただ、どこの誰のどの日記にコメントを付けているのか分からないので(これはmixiの問題)かなり不安になります。このへんは認証用の文字列(今はepochにUAをつけただけだけど実際はmd5をとって第三者に推測できなくする必要がある)を、ヒューマンリーダブルで、これは認証用のコメントでどこどこに書き込まれますよ、というのを付加してあげれば軽減できるかもしれません。
mixiが認証サービスをしないかというはなしがあるけど、typekeyと同様の使い方であれば、現状でもやればできるということで。
分かってるユーザに分かったうえで使ってもらうのであれば何かに使えそうです。
*
間違ってターゲットの日記を消しちゃったので動かなくなりました….
About this entry
You’re currently reading “mixiをユーザ認証に使えるか(工夫次第で使えるかも),” an entry on ku
- Published:
- 2006.12.19 / 8pm
- Category:
- Web

3 Comments
Jump to comment form | comments rss [?] | trackback uri [?]