電気ウナギ的○○

About Home

PHP で OpenID の認証デモサイトを作ってみた

shinoda (2013年6月27日 07:29)
試しに、PHP で RP(Relying Party)サイトを作ってみたかったので、Janrain OpenID Libraries を取得し、その中の examples/consumer 以下のサンプルプログラムを使って構築してみた。

で、少々ハマったのでメモしとく。

まず、

Fatal error: Call-time pass-by-reference has been removed in /DocumentRoot/Auth/OpenID/Consumer.php on line 1184

というエラーが出る。
どうも、5.3系では「関数コール時に引数が参照で渡されたら警告を出す」という動きを強制的に ON(有効)にしとかないと駄目みたいね。「参照渡し」は許さないということのようだ。

php.iniの allow_call_time_pass_reference の部分を、

;allow_call_time_pass_reference = Off
allow_call_time_pass_reference = On

という具合に(Off→Onに)修正した。

次に、うちの PHP は OpenSSL エクステンションが有効になってなかった。
これ、OpenID のサンプルプログラムの中から OP へのアクセスに SSL を使用するため(例:https://mixi.jp)、有効になってないと駄目。

20130626_openssl.jpg

ということで、configure の引数に --with-openssl を指定して再 make を行った。(この際、バージョンも 5.3.6 から、5.3.26 に上げた)

で、ここまやってもまだ try_auth.php を実行すると Authentication error; not a valid OpenID. というエラーが・・・

これは結局、mixi.jp の証明書がサーバにインストールされていないことが原因。

ブラウザで https://mixi.jp にアクセスし、証明書情報を表示し「エクスポート」した内容をサーバ上の証明書ファイルに追加してやる。
例えば、Forefox で証明書情報をエクスポートすると mixi.jp.crt という名前のファイルで保存されるので、その内容を、

cat >> /etc/pki/tls/certs/ca-bundle.crt

として、ca-bundle.crt の後ろに追加してやる。

以上で、index.php 上で「https://mixi.jp」を Identity URL に入力して Verify ボタンを押せば https://mixi.jp/openid_server.pl に飛び、認証が済めば指定したサイト(finish_auth.php)に帰ってくるところまで確認した。

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/2565

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE