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

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

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30