Contents

月曜日, 2月 07, 2011

Zend Framework版OpenIDのGoogle&Mixi対応

とっても申し訳ないとは思いますが、今日はプログラムとか分からない人には、全くわからない内容を書いちゃいます。
そんなの知らんよ!という方は、読み飛ばしてください。こういう話が分かる人って、この日記には来ないよなぁ(笑)


さて、プログラマーの皆さん!よく知られていることですが、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

良かったら使ってみてください。

2 件のコメント:

  1. zendでmixiの対応ありがとうございます。助かります。こうじのがくのをつかってfacebookも使えるようにしました。anandwebtech.wordpress.com

    返信削除
  2. こうじのがく土曜日, 9月 10, 2011

    使って頂いてありがとうございます。お役に立ててうれしいです。

    返信削除

注: コメントを投稿できるのは、このブログのメンバーだけです。