理系学生日記

おまえはいつまで学生気分なのか

mod_auth_cookie (設定編)

**前提を整える

まずばベーシック認証がきちんと動作していることを確認します. テスト用のディレクトリを 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>

||<