PR

モジュールで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のWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

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