とっても申し訳ないとは思いますが、今日はプログラムとか分からない人には、全くわからない内容を書いちゃいます。
そんなの知らんよ!という方は、読み飛ばしてください。こういう話が分かる人って、この日記には来ないよなぁ(笑)
さて、プログラマーの皆さん!よく知られていることですが、Zend FrameworkのOpenIdクラス群はGoogleやMixiなどのXRI/Yadis環境のOpenId認証には対応できません。(今日現在は、ねっ)
普通は、Open ID Library( http://www.janrain.com/openid-enabled )を使うようなのですが、これがどうも分かりずらい。
ワーニングがでまくるしうまく動作しません。みんな一発で動いているなんてすごいですね。
それで、中のコードを読んで対応しようとするのですが、どーもコードが汚い。
いい加減いやになり、Zend FrameworkのほうをGoogleに対応させる事にしました。
最初はAkeem Philbertさんのページ(http://ak33m.com/?p=71)のパッチを当てて動いて感動したのですが、どうもGoogleだけでは物足りなくてもうひとつ動かない代表格のMixiにも対応させて見ました。
その結果Akeem Philbertさんのコードが跡形もなくなってしまったのですが、一応改変版です。
対応方法は・・・
・Yadisもどき
・x-xrds-locationヘッダーに反応します。
・metaタグのx-xrds-locationに反応します。
・XRIもどき
・content-type: application/xrds+xmlに反応してXRDSを認識します
・x-xrds-locationされたらXRDSを取りに行きます。
・OpenID 2.0のauth request対応
・identifier_selectに対応します。
・Mixiパッチ
・OpenID 2.0でも、HMAC-SHA1を許しました。
・AX対応
・Googleに加えて、Yahoo.co.jp、Yahoo.com、Mixi.jpにも対応しました。
・・・といったところです。
一応、見た目上は動いているサーバーは以下のとおり。
・https://www.google.com/accounts/o8/id
・https://me.yahoo.co.jp
・https://me.yahoo.com/
・http://www.yahoo.co.jp
・http://mixi.jp
そしてOpenID 1.xへ悪影響はないかと調べたかったのですが、はてなサーバで試したところ動いているようです。
・http://www.hatena.ne.jp/ユーザーID
詳しい話とパッチのダウンロードはこちらからどうぞ。
こうじのがく まとめ
phpのパスの通ったところに展開してください。
使い方は、サンプルコードもつけてあるので、Zend Frameworkが分かる人ならすぐ分かります。
これらは、Zend Frameworkのマニュアルに載っているサンプルを動かすものです。
- openid_form.php
- openid_request_handler.php
- openid_verify_response.php
これはAXで属性を取ってくるサンプルを動かすものです。
- test_consumer_ax.php
良かったら使ってみてください。
zendでmixiの対応ありがとうございます。助かります。こうじのがくのをつかってfacebookも使えるようにしました。anandwebtech.wordpress.com
返信削除使って頂いてありがとうございます。お役に立ててうれしいです。
返信削除