PR

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

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

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

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