Zend Frameworkに含まれているOpenIDライブラリーを Google & Mixi 対応しました (とにかくダウンロードな方はこちら)
※作った当時はZF1の時代でした。
よく知られていることですが、Zend FrameworkのOpenIdクラス群はGoogleやMixiなどのXRI/Yadis環境のOpenId認証には対応できません。
普通は、Open ID Libraryを使うようなのですが、これがどうも分かりずらい。 ワーニングがでまくるしうまく動作しません。みんな一発で動いているなんてすごいですね。 それで、中のコードを読んで対応しようとするのですが、どーもコードが汚い。
いい加減いやになり、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
 
ダウンロードは以下のページからできます。
Zend Framework版 OpenID Google & Mixi対応パッチ
phpのパスの通ったところに展開してください。 使い方は、サンプルコードもつけてあるので、Zend Frameworkが分かる人ならすぐ分かります。 これらは、Zend Frameworkのマニュアルに載っているサンプルを動かすものです。
- openid_form.php
 - openid_request_handler.php
 - openid_verify_response.php
 
これはAXで属性を取ってくるサンプルを動かすものです。
- test_consumer_ax.php
 
良かったら使ってみてください。