①OPとRPのホストの設定を行う。
bash-3.00# vi /etc/hosts
172.16.20.55 openid-op.openid.net
172.16.20.56 openid-rp.openid.net
②PHP対応のため、以下のモジュールをインストールする。
[SunFreewareからダウンロード]
libiconv,libintl,libidn,openssl-1.0.0g,curl,expat,fontconfig,freetype,freetds,libssh2,gd,jpeg,openldap,mysql,libpng,sasl,libxml2,zlib,xpm,libgcc-3.4.6,gcc-3.4,gmp
bash-3.00# pkgadd -d ./<ファイル名>
→/usr/local へインストールされる。
③apacheをインストールする。
bash-3.00# cd /usr/local/src
bash-3.00# PATH=$PATH:/usr/local/bin:/usr/ccs/bin
bash-3.00# ./configure --with-included-apr --enable-so --enable-ssl --with-ssl=/usr/local/ssl
bash-3.00# make
bash-3.00# make install
④apacheの定義ファイルの編集を行う。
bash-3.00# vi /usr/local/apache2/conf/httpd.conf
[設定内容]
ServerName openid-op.openid.net:80
User webservd
Group webservd
該当のディレクティブがある箇所に以下を追加。
LoadModule foo_module modules/libphp5.so
AddType application/x-httpd-php .php
php.iniを格納する。(デバッグ用)
bash-3.00# cp /usr/local/php/doc/php/php.ini-development /usr/local/php/lib/php.ini
「Call-time pass-by-reference has been deprecated」を出さないようにするために、
bash-3.00# vi /usr/local/php/lib/php.ini
<変更前>
allow_call_time_pass_reference = Off
<変更後>
allow_call_time_pass_reference = On
⑤apacheを起動する。
bash-3.00# /usr/local/apache2/bin/apachectl -k start
bash-3.00# ps -ef|grep http
webservd 23837 23836 0 09:35:04 ? 0:00 /usr/local/apache2/bin/httpd -k start
webservd 23838 23836 0 09:35:04 ? 0:00 /usr/local/apache2/bin/httpd -k start
webservd 23840 23836 0 09:35:04 ? 0:00 /usr/local/apache2/bin/httpd -k start
webservd 23839 23836 0 09:35:04 ? 0:00 /usr/local/apache2/bin/httpd -k start
webservd 23841 23836 0 09:35:04 ? 0:00 /usr/local/apache2/bin/httpd -k start
root 23836 1 0 09:35:04 ? 0:00 /usr/local/apache2/bin/httpd -k start
root 23843 1025 0 09:35:12 pts/3 0:00 grep http
⑥http://www.janrain.com/openid-enabledからOpenIDライブラリを取得し、/usr/local/apache2/htdocs配下に展開する。
bash-3.00# cd /usr/local/src
bash-3.00# cp /hgfs/Desktop/openid-php-openid-2.2.2-24-gd4e5efe.zip /usr/local/src
bash-3.00# mv -f openid-php-openid-d4e5efe /usr/local/apache2/htdocs/openid-php-openid
⑦サンプルアプリにて、OpenIDのOP画面(http://openid-op.openid.net/openid-php-openid/examples/server/index.php)にアクセスして設定内容を確認する。
★同様に①から⑦を行うことでOpenIDのRPを構築する。その際に以下を読み替える。
④ではServerNameはopenid-rp.openid.net:80
⑦ではOpenIDのRP画面はhttp://openid-rp.openid.net/openid-php-openid/examples/consumer/index.php
⑧サンプルアプリを修正する。
bash-3.00# vi /usr/local/apache2/htdocs/openid-php-openid/examples/server/index.php
<変更前>
header("Location: server.php");
<変更後>
header("Location: http://openid-op.openid.net/openid-php-openid/examples/server/server.php");
念のため、残骸が残っているかも知れないので、消しておく。
bash-3.00# rm -r /var/tmp/_php_consumer_test/
⑨キャプチャを採取する。
・OP側で実行(RPから来たキャプチャの詳細を採取)
bash-3.00# snoop -v -o /tmp/openid-op.txt openid-rp.openid.net tcp port 80
・RP側で実行(OPから来たキャプチャの詳細を採取)
bash-3.00# snoop -v -o /tmp/openid-rp.txt openid-op.openid.net tcp port 80
⑩OP側でサンプルアプリを動かす。
<OP側>
・http://openid-op.openid.net/openid-php-openid/examples/server/setup.phpにアクセスする。
・出来上がったconfig.phpをOP側の/usr/local/apache2/htdocs/openid-php-openid/examples/server配下に格納する。
・http://openid-op.openid.net/openid-php-openid/examples/server/server.phpで[Log in]を押下する。
・ログインを確認する。
⑪RP側でサンプルアプリを動かす。
<RP側>
・http://openid-rp.openid.net/openid-php-openid/examples/consumer/index.phpにアクセスする。
・http://openid-op.openid.net/openid-php-openid/examples/server/server.php/idpage?user=suzukiを入力し、[Verify]を押下する。
・[Confirm] を押下する。
・RPにログインできることを確認する。
[参考]
(a)1st Step
OpenIDの概要やPHPライブラリについては以下が参考になる。
http://thinkit.co.jp/free/article/0712/7/1/
http://thinkit.co.jp/free/article/0712/7/2/
http://thinkit.co.jp/free/article/0712/7/3/
http://thinkit.co.jp/free/article/0712/7/4/
(b)2nd Step
OpenIDの概念や歴史などについては、以下が参考となる。
http://www.slideshare.net/zigorou/introduction-openid-authentication-20-revival-1456581
http://www.ipa.go.jp/security/fy23/reports/tech1-tg/b_03.html
(c)3rd Step
今さらだが、OpenIDで使っている暗号技術の概念は、以下が参考となる。
http://dev.sbins.co.jp/cryptography/cryptography02.html
(d)4th Step
以下のURLを書いた方の苦労は分かる…。
http://blog.bornneet.com/Entry/169/
(e)5th Step
OPのidentityURLのディスカバリについての説明。
http://blog.yappo.jp/yappo/archives/000563.html
(f)6th Step
これは分かりやすかった。
http://tech.feedforce.jp/openid_auth_20.html
0 件のコメント:
コメントを投稿