Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
BLOGTIMES
2008/02/03

JanRain PHP OpenIDではまった所

  php  openid 
このエントリーをはてなブックマークに追加

今回のNP_OpenIdではJanRain PHP OpenIDというライブラリを使いましたが*1、思わぬところで何箇所かはまったのでメモをしておきます。

curlを使わないほうがいいかもしれない

とりあえずサンプルを自分のサーバーにインストールして動作させてみたのですが、はてなは認証できるものの、Yahoo!やTypeKeyでは認証できないという状況になって困りました。

色々トレースして分かったのですが、どうもcurlを使っているHTTPFetcherがうまく動いていないようでした。僕のPHPのコンパイルに問題があるだけかもしれませんが、このライブラリにはcurlを使うAuth_Yadis_ParanoidHTTPFetcherと、使わないAuth_Yadis_PlainHTTPFetcherがあるので後者を使うようにしたところ、Yahoo!でも認証できるようになりました。

やり方としてはライブラリの呼び出しの前に下記の1行を加えます。

define('Auth_Yadis_CURL_OVERRIDE', '1');

Storeの選び方

一番簡単なのはFileStoreすが、Nucleusのプラグインとして配布することを考えるとパーミッションの設定をややこしくすることは絶対に避けたい*2のでMySQLStoreを使おうとしたのですが、これが一筋縄ではいきませんでした。

本来はこのライブラリにあわせてプログラムを作ればいいのでしょうが、今回はプラグインから利用するに当たってライブラリの挙動をある程度Nucleusの挙動にあわせる必要がありました。とりあえずデフォルトでテーブルタイプがInnoDBだったり、カラムにBLOBがあったりとなかなか面倒なテーブルになっています。今回はPEARへの依存性を排除したり、トランザクション処理を廃してテーブルタイプをMyISAMにしたり、プリペアードステートメントがなくても動作可能なようにするためにMySQLStoreクラスを自前で書き直したものを使っています。

また、MySQL5.1系をつかっているせいかもしれませんが、テーブルを作る際にINDEXが長すぎるといわれるのでINDEXの長さを調整したりする必要があります。

それ以外のはまりどころ

Auth_OpenID_RAND_SOURCEを定義する必要もありそうです。

  • *1: その他のOpenIdについてはhttp://wiki.openid.net/Librariesにまとまっています。
  • *2: NP_Blacklistなどこれまでの経緯を考えると、いい事があった試しがない。

トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2405
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
[OpenID] (2008/06/30 15:37) =hdknr <%HatenaAuth()%>

今日exampleのconsumer/serverではまってます。なんかAuth_Yadis_ParanoidHTTPFetcherではcurlにrangeを指定してリクエストしているので206が返ってきているみたいです。
そこをコメントアウトすると200を返すので大丈夫みたいですね。
JanRainのテストって。。。。

hsur (2008/06/30 16:38) <%HatenaAuth()%>

なるほど。
追っていくのが面倒だったので、最後まで確認していなかったんですが、そういうことでしたか。。。
これはテストしてないんでしょうね。

hdknr [OpenID] (2008/06/30 17:49) =hdknr <%HatenaAuth()%>

http://trac.openidenabled.c...

に投げておきました。
が、”Paranoid”というネーミングを考えると実はこれが意図した動きで、実はhsurさんのようにcurlを使わない、という設定の方が正しいのかもしれません。

これ以外にもJanRainには不思議なコードがあるので。。。。

hsur (2008/07/01 06:04) <%HatenaAuth()%>

バグレポートおつかれさまです。
もう半年近く前の話なので、そこからまったく改善されていないとは思いませんでした。

これ以外にもJanRainには不思議なコードがあるので。。。。

具体的にどこかは忘れてしまいましたが、確かに真意が図りかねる部分がありましたね。

Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン