OpenIDでのログイン機能を動かしてみてなんとなくわかった気になる(PHP編)
OpenIDってなんだよ、っていうことは検索すればWikipediaをはじめ、
細かい説明が書いてあるページがたくさん見つかると思うので、
今回は、http://www.openidenabled.com/が提供するPHPライブラリを使って
動作確認できるページをセットアップしてみる。
まずは、XAMPPのセットアップ。
OpenIDでのログインでは、https通信をする必要があるので、
手っ取り早く環境を構築するには、XAMPPが一番だともいます。
XAMPPをインストールしたら忘れずに起動しておきます。
次に、http://www.openidenabled.com/が提供するPHPライブラリを
ダウンロードして、/opt/lampp/htdocs/以下に保存+解凍。
php-openid-*.*.* というディレクトリができるが、
わかりやすくするためバージョン情報をrenameで隠蔽。
/etc/hostsを編集して、適当に自分のサーバに名前をつける
http://my.example.com/phpopenid/examples/consumer/
にアクセスしてみて、
このような画面がでたら、OK
Identity URLに以下のものを入力すると、それぞれのプロバイダでログインできる
というメッセージとともにログインに使われたOpenIDが、緑の枠に表示されます。
動かすだけでなんとなく理解がすすむ気がするので、
興味と時間がある人はおためしください。
以下、はまった点など
細かい説明が書いてあるページがたくさん見つかると思うので、
今回は、http://www.openidenabled.com/が提供するPHPライブラリを使って
動作確認できるページをセットアップしてみる。
まずは、XAMPPのセットアップ。
OpenIDでのログインでは、https通信をする必要があるので、
手っ取り早く環境を構築するには、XAMPPが一番だともいます。
XAMPPをインストールしたら忘れずに起動しておきます。
次に、http://www.openidenabled.com/が提供するPHPライブラリを
ダウンロードして、/opt/lampp/htdocs/以下に保存+解凍。
php-openid-*.*.* というディレクトリができるが、
わかりやすくするためバージョン情報をrenameで隠蔽。
$ cd /opt/lampp/htdocs次に、自分のホスト名がlocalhostだとOpenID認証サーバ側で怒られる場合があるので、
$ wget http://openidenabled.com/files/php-openid/packages/php-openid-*.*.*.tar.bz2
$ tar jxvf php-openid-*.*.*.tar.bz2
$ mv php-openid-*.*.* phpopenid
/etc/hostsを編集して、適当に自分のサーバに名前をつける
$ cat /etc/hostsこれで基本的な準備は完了。
127.0.0.1 my.example.com
http://my.example.com/phpopenid/examples/consumer/
にアクセスしてみて、
このような画面がでたら、OK
Identity URLに以下のものを入力すると、それぞれのプロバイダでログインできる
- 「yahoo.co.jp」 と入力
- Yahoo! Japan IDでログイン
- 「yahoo.com」 と入力
- Yahoo! ID(アメリカのYahoo! ID)でログイン
- 「livedoor.com」 と入力
- ライブドアIDでログイン
- 「https://www.google.com/accounts/o8/id」 と入力
- Google accountでログイン
- Googleは上記のURLを入力する必要あり
- 「mixi.jp」 と入力
- mixi IDでログイン
- ただし、2つの証明書のセットアップが必要
というメッセージとともにログインに使われたOpenIDが、緑の枠に表示されます。
動かすだけでなんとなく理解がすすむ気がするので、
興味と時間がある人はおためしください。
以下、はまった点など
- GoogleのIdentity URLはgoogle.comじゃだめ。http://code.google.com/intl/ja/apis/accounts/docs/OpenID.html
- mixi.jpの証明書登録がめんどう
- XAMPPをhttp://localhostで見ているとOpenIDログインできない
- XAMPPの場合、/opt/lampp/share/curl/curl-ca-bundle.crtに既存の証明書ファイルがある