Zend Framework版OpenIDのGoogle&Mixi対応

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

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