Webの認証の1つにDigest認証というものがあります。
Basic認証の上位版といった感じのもので、 ユーザIDとパスワードを平文で送るBasic認証と違い 暗号化したユーザIDとパスワードを Webサーバに送るため、盗聴や改竄に対して強くなっています。
最近では、ほとんどのWebブラウザが対応しているそうで IEでもFireFoxでも使うことができましたえ。
Digest認証は以下のコマンドでパスワードファイルを作成します。 コマンド実行後にパスワードの入力を求められます。
# htdigest -c /etc/apache2/.htdigest "digest auth" testuser
Apacheの設定は以下のようになります。
Alias /site/ /var/www/digest/ <Directory "/var/www/digest"> AuthUserFile /etc/apache2/.htdigest AuthName "digest auth" AuthType Digest Require valid-user </Directory>
ほとんどBasic認証と同じです。
Basic認証と違う点は、パスワードファイルの作成時に 認証領域(この場合は"digest auth")を設定することと この値がApacheのAuthNameと一致している必要があります。
Apacheが2.2未満の場合は、AuthUserFileではなく AuthDigestFileディレクティブを使わないとエラーになります。
ホントは、これだけでOKのはずなのですが、 IEはCGIなどで?が付くURLだと正しく認証情報を作れないそうです。 (IE7からは対応されているらしいです)
IEがずっと対応しないので、 Apache側で専用に対応策を作ってくれたそうです。 下の定義をApacheの設定ファイルに追加します。
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
あとはauth_digestモジュールを有効にして、再起動します。
# a2enmod auth_digest # apache2ctl graceful
これで終わりです。