サードパーティー製認証モジュール!

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

ユーザー認証でタイムアウトを設定する「mod_auth_timeout」

 「mod_auth_timeout」はユーザー認証時にタイムアウトを設定するモジュールです。通常Basic認証では、クライアント側でWebブラウザを閉じるなどの操作が行われない限り、一度認証に成功したパスワードをWebブラウザで保持し、アクセスの度にユーザーがいちいち入力する手間を省いています。

 しかし、オンラインバンキングなど、高いセキュリティーが求められるWebサイトでは、ユーザーが一定時間操作を行わなかった場合に、強制的にログアウトし、再度ログインを求めるような仕組みがとられています。

 こうしたWebアプリケーションでは、Webフォームとセッション変数を使った認証方法が用いられています。セッション変数とはサーバー内に蓄えられる情報で、サーバーとクライアントのセッション情報に基づいて管理されたデータです。セッション変数を使うことで、コネクションレスなHTTPプロトコルでも、継続的に変数を持続させることができ、このセッション変数の有効期限を設定することで、ユーザー認証の有効期間を調整することができます。

 今回紹介する「mod_auth_timeout」は、セッション変数を使用しないBasic認証でも、ユーザー認証のタイムアウトを発生させることができます。

 ユーザーのログイン時間はDBMファイルを使って管理します。秒単位で有効期間を設定することができます。認証フロントエンドはBasic認証に限られますが、バックエンドはLDAPでもMySQLでもhtaccessファイルでも、自由に使用することができます。

mod_auth_timeoutのインストール

 ソースファイルからインストールする方法を解説します。ここではLinuxディストリビューション「CentOS 5.2」での作業を例に解説をすすめます。

 まずソースアーカイブをmod_auth_timeoutのページ(http://secure.linuxbox.com/tiki/tiki-index.php?page=mod_auth_timeout)からダウンロードし展開します。以下の例ではダウンロードにwgetコマンドを使用しています。

# wget http://secure.linuxbox.com/tiki/files/mod_auth_timeout-1.0.4.1.tar.gz
# tar xvf mod_auth_timeout-1.0.4.1.tar.gz

 展開したディレクトリに移動し、「configure.sh」を実行します。この際apxsコマンド(またはapxs2)に対しパスが通っている必要があります。

# cd mod_auth_timeout-1.0.4.1
# ./configure.sh

 作成されたMakefileに対し、makeコマンドを実行します。

# make
# make install

 「make install」実行で、mod_auth_timeout.soファイルがモジュールディレクトリ(CentOSでは/usr/lib/httpd/modules/)にインストールされます。

 次にApacheの設定ファイル「httpd.conf」を前回使用した基本的なbasic認証の設定(http://www.thinkit.co.jp/article/120/2/2.html)を元に、図2のように修正します。

 「AuthTimeOut」でタイムアウト値を、「AuthTimeOutDBMFile」でログイン時間を管理するファイルを指定します。管理ファイルを設置するディレクトリには「/var/spool/auth_timeout/」を用意し、Apacheのデーモン権限で管理ファイルを作成・更新できるよう、オーナー情報を変更します。オーナー・グループ名にはApacheデーモンのものを使用します。一般的には「apache」が使用されていますが、「nobody」を使用するケースもあります。httpd.confの「User」と「Group」を確認します。

# mkdir /var/spool/auth_timeout/
# chown apache /var/spool/auth_timeout/
# chgrp apache /var/spool/httpd/auth_timeout/

 設定完了後Apacheを起動、または再起動しmod_auth_timeoutを有効にします。apachectlコマンドを使用して再起動する場合は以下を実行します。

# apachectl restart

 またはOSで用意された起動スクリプト(CentOSでは/etc/init.d/httpd)を利用する場合は以下を実行します。

# /etc/init.d/httpd restart

 クライアントから、対象URL(図2の例では「http://サーバーのアドレス/restricted」)に対し、時間をあけてアクセスし、タイムアウトが働き、再度ユーザー名とパスワードの入力が促されることを確認します。なお筆者が試した限り、タイムアウトを120秒以下に設定することはできませんでした。300秒など、現実的な値を設定するようにします。

 次は、「mod_auth_shadow」のインストールと設定について説明しましょう。

愛知県出身、東京都在住。現在通信会社勤務。在学中にかかわったISPの立ち上げにはじまり、古くからオープンソースソフトウェアに親しみ、現在ではシステム構築を中心に執筆を手がけている。

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

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

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

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