**前提を整える
まずばベーシック認証がきちんと動作していることを確認します. テスト用のディレクトリを 2 つ作成し,それぞれ id/pass が test1/test1,test2/test2 しかアクセスができないようにします.
|apache|
AuthName "Members Only" AuthType Basic AuthUserFile /etc/apache2/htpasswd Require user test1
<Directory "/var/www/basic-test2/">
AuthName "Members Only"
AuthType Basic
AuthUserFile /etc/apache2/htpasswd
Require user test2
</Directory>
||<
以下は一旦 /var/www/basic-test2 以下への Basic 認証を突破した test2 ユーザが /var/www/basic-test1/a.txt にアクセスしたときの HTTP リクエスト・レスポンスヘッダの一部.
|| GET /basic-test1/a.txt HTTP/1.1 Host: www.kiririmode.com User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ja-JP-mac; rv:1.9.0.5) Gecko/2008120121 Firefox/3.0.5 Authorization: Basic dGVzdDI6dGVzdDI=
HTTP/1.x 401 Authorization Required Date: Sun, 21 Dec 2008 07:11:54 GMT WWW-Authenticate: Basic realm="Members Only" ||< きちんと Basic 認証がかかっており,test2 ユーザはアクセスできないことが確認できます.
**mod_auth_cookie の設定
Ubuntu (というか,Debian 系) だと,モジュールのロードを行うディレクティブは /etc/apache2/mods-available に置くのが一応のルールになっています.そこで,このディレクトリに auth_cookie.load というファイルを以下の内容で作成します.
|apache| LoadModule auth_cookie_module /usr/lib/apache2/modules/mod_auth_cookie.so ||< その後,auth_cookie_module を有効にします. |tcsh| $ sudo a2enmod auth_cookie ||<
次に実際の mod_auth_cookie の設定を行います.当面付け加えるのは AuthCookieName と AuthCookieOverride.それぞれの意味としては,以下のような感じです. -AuthCookieName: Basic 認証に使用する id と pass が設定されたクッキーの名前を指定する -AuthCookieOverride: リクエスト中の Authorization ヘッダと Cookie ヘッダの id/pass のうち,Cookie ヘッダのものを優先する
これら 2 つのディレクティブを,ぼくは default-ssl ファイルに付け加えました.
|apache|
AuthName "Members Only" AuthType Basic AuthUserFile /etc/apache2/htpasswd Require user test1 AuthCookieName idpass AuthCookieOverride On
<Directory "/var/www/basic-test2/">
AuthName "Members Only"
AuthType Basic
AuthUserFile /etc/apache2/htpasswd
Require user test2
AuthCookieName idpass
AuthCookieOverride On
</Directory>
||<