モジュールでOpenIDを簡単に実現!
mod_auth_openidインストール準備、libopkeleインストール
 Apache 2.2にmod_auth_openidをインストールする方法を解説します。ここではLinuxディストリビューション「CentOS 5.2」での作業を例に解説をすすめます。
		
		 mod_auth_openidのバイナリパッケージは提供されていないため、ソースファイルからインストールする必要があります。
		
		 CentOS 5.2でmod_auth_openidをインストールするには、gccなどの開発環境以外に以下のパッケージが必要になります。
		
		・PCRE(Perl Compatible Regular Expre)のヘッダーファイル
		・HTML TIDY関連パッケージ
		・Apache開発関連パッケージ
		・libopkele
		
		 とりわけlibopkeleはOpenIDを実装するための重要なライブラリです。libopkele-2.0からOpenID Authentication 2.0に準拠しています。
		
		 順々にインストールを実行します。パッケージが提供されている場合には、積極的に利用し、ソースからインストールするものを最小限にとどめます。CentOSではyumコマンドを使ってパッケージのオンラインインストールができます。
		
		 以降のコマンド実行例では、「$」プロンプトは一般ユーザーによる作業、「#」プロンプトはrootユーザーによる作業を表します。rootユーザーが直接使用できない場合には、sudoコマンドで代用します。また紹介しているインストール方法や設定ではセキュリティーに対する考慮が不十分ですので十分注意してください。
		
		 以下のコマンドを実行してPCREヘッダーファイルをインストールします。
		
		# yum install pcre-devel
		
		 次にtidy関連パッケージをインストールします。
		
		# yum install tidy
		# yum install libtidy
		# yum install libtidy-devel
		
		 次にApache開発関連パッケージをインストールします。
		
		# yum install httpd-devel
		
		 libopkeleはソースからインストールしますが、そのままではconfigure実行の際に、「tidy/tidy.h」が見つけられないというエラーが表示されます。ここまでの作業で、tidy.hは「/usr/include」にインストールされていますが、libopele-2.0では「/usr/include/tidy」にあることを期待しているため、手動で対応します。
		
		 まず、「/usr/include」の中に/tidyディレクトリを作成します。
		
		# cd /usr/include/
		# mkdir tidy
		# cd tidy
		
		 シンボリックリンクを作成します。
		
		# ln -s ../tidy.h .
		
		 以下を実行してファイルの詳細を確認します。
		
		# ls -l
		合計 0
		lrwxrwxrwx 1 root root 9 8月 16 03:25 tidy.h -> ../tidy.h
		
		 libopkeleのソースアーカイブをwgetでダウンロードし、tarコマンドで展開します。
		
		# wget http://kin.klever.net/dist/libopkele-2.0.tar.gz
		# tar xvfz libopkele-2.0.tar.gz
		
		 作業ディレクトリを移動しconfigureを実行します。その際インストール先を、デフォルトの「/usr/local」から「/usr」に変更するため、オプションに「--prefix=/usr」を指定します。
		
		# cd libopkele-2.0
		# ./configure --prefix=/usr
		
		 makeを実行する前に、ソースアーカイブ中の「lib/basic_rp.cc」ファイルの冒頭にinclude文を1行追加します。
		
		#include 
		
		 修正後makeコマンドを実行します。
		
		# make
		# make install
		
		 libopkeleのインストールは以上です。続いてmod_auth_openidをビルドし、インストールします。
mod_auth_openidのインストールと動作確認
 最後にApacheモジュール「mod_auth_openid」をビルドし、Apacheに組み込みます。ソースファイルはSubversionを使ってダウンロードします。次に作業ディレクトリを移動し、autogen.shスクリプト実行します。
		
		# svn co https://svn.butterfat.net/public/mod_auth_openid/trunk mod_auth_openid
		# cd mod_auth_openid/
		# sh autogen.sh
		
		 その後、make、make installでモジュールファイルをビルドし、Apacheモジュールディレクトリにコピーします。
		
		# make
		# make install
		
		 OpenID認証後に表示されるコンテンツを用意します。HTMLコンテンツのルートディレクトリ配下にsample_oidディレクトリを作成し、「http://サーバー名/sample_oid/」でアクセスできるようにします。
		
		# mkdir /nfs/contents1/ibc//html/sample_oid
		# echo "
TEST OK
" > /nfs/contents1/ibc//html/sample_oid/index.html次にApacheの設定ファイル「httpd.conf(CentOSでは/etc/httpd/conf/httpd.conf」を修正し、図3の上のような設定を追加します。「AuthOpenIDEnabled On」でOpenID認証を有効にします。
そのほかmod_auth_openidの設定項目については、Trac内のmod_auth_openidのページ(http://trac.butterfat.net/public/mod_auth_openid)を参照します。
Apacheを起動(または再起動)し、mod_auth_openidを有効にします。再起動にapachectlコマンドを使用する場合は以下を実行します。
# apachectl restart
またはOSで用意された起動スクリプト(CentOSでは/etc/init.d/httpd)を利用する場合は以下を実行します。
# /etc/init.d/httpd restart
Webブラウザで「http://サーバー名/sample_oid/」にアクセスし、図3(下)のようなOpenIDデフォルトの認証画面が表示されていることを確認します。「Identity URL:」に、1ページで取得したようなOpenID URLを入力することで、認証手続きが開始します。
以上OpenID認証を可能にするmod_auth_openidのインストール方法を紹介しました。Webアプリケーションとの組み合わせで利用することが一般的だったOpenIDも、今回紹介した方法ならプログラミングを伴うことなく、Apacheで手軽に利用できます。
さて4回にわたり認証系Apacheモジュールを取り上げ解説しました。認証分野に限っても、多くのモジュールがあり、本連載で紹介したのは、その一部に過ぎません。ユーザーを識別し、適切なコンテンツを提供しなくてはいけないWebサーバーにとって、認証/承認/アクセス制御は根幹を支える重要な技術です。一見複雑な認証技術も、Apacheではモジュールファイルを追加するだけで利用できますが、認証とセキュリティー問題を切り離すことはできません。利用に際しては、脆弱(ぜいじゃく)性などのセキュリティー問題にも注意を払うようにしましょう。
本連載が皆さんに少しでもお役に立つことを願って、本連載の結びとしたいと思います。ご愛読ありがとうございました。
 
  






