モジュールでOpenIDを簡単に実現!

2008年8月29日(金)
Shin.鶴長

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ではモジュールファイルを追加するだけで利用できますが、認証とセキュリティー問題を切り離すことはできません。利用に際しては、脆弱(ぜいじゃく)性などのセキュリティー問題にも注意を払うようにしましょう。

 本連載が皆さんに少しでもお役に立つことを願って、本連載の結びとしたいと思います。ご愛読ありがとうございました。
愛知県出身、東京都在住。現在通信会社勤務。在学中にかかわったISPの立ち上げにはじまり、古くからオープンソースソフトウェアに親しみ、現在ではシステム構築を中心に執筆を手がけている。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています