インターネットなこと: 2013年6月アーカイブ

試しに、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)に帰ってくるところまで確認した。
取り敢えず動きが確認したかったので、jitsu102さんの「PerlでOpenIDの認証サイトを作ってみた」のサンプルプログラムをそのまま使わせてもらって、うちのテストサーバに設置。

あ、Net::OpenID::Consumer モジュールは LWP::UserAgent じゃなく LWPx::ParanoidAgent(ホワイトリストなどを参照して、アクセス制限できる WWW アクセスモジュール)の使用を推奨してるってことなので、そこだけ変えたけど。
でも、blocked_hosts や whitelisted_hosts の設定してるわけじゃないので、意味ねぇ~(^^;

ま、その辺はおいおいと。

・・・ということで、セットアップしたプログラムで動きを追っていくと、

(1) フォームに OpenID(Yahoo!JAPAN で発行したもの)を入力して実行。

20130606_openid1.jpg

(2) まだ Yahoo!JAPAN にログインしていないので、ログイン画面が表示される。

20130606_openid2.jpg

(3) 認証OKなんで、要求のあったサーバに OpenID URL 返すけどいい?という警告表示。

20130606_openid3.jpg

(4) return_to で指定した URL にリダイレクト。(デモでは、返却された値を表示)

20130606_openid4.jpg

という流れ。

ああ、でも、mixi だと、最初に、

20130606_openid5.jpg

って、警告画面が出るな。その辺の微妙な動きは OpenID Provider によって違うんじゃね。
まあ、Relying Party(Consumer)の処理には全然関係ないけど。

ということで、今度は IdP(Identity Provider)サーバを作ってみなきゃ。

このアーカイブについて

このページには、2013年6月以降に書かれたブログ記事のうちインターネットなことカテゴリに属しているものが含まれています。

前のアーカイブはインターネットなこと: 2013年5月です。

次のアーカイブはインターネットなこと: 2013年7月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら