サードパーティー製認証モジュール!
ユーザー認証でタイムアウトを設定する「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」のインストールと設定について説明しましょう。