モジュールで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ではモジュールファイルを追加するだけで利用できますが、認証とセキュリティー問題を切り離すことはできません。利用に際しては、脆弱(ぜいじゃく)性などのセキュリティー問題にも注意を払うようにしましょう。
本連載が皆さんに少しでもお役に立つことを願って、本連載の結びとしたいと思います。ご愛読ありがとうございました。