Apache で Digest 認証の設定
WWW でユーザ認証を行なう際、Basic 認証が用いられることがあります。Basic 認証は認証情報を送信する際、プレインテキストを MIME エンコードして送信します。MIME エンコードされた文字列はすぐに戻せます。つまり通信内容が盗聴されるとログインIDとパスワードが簡単に知られてしまいます。
この欠点を無くし、認証情報の送信に MD5 による暗号化と、チャレンジ・レスポンス方式を採り入れたダイジェスト認証というものがあります。盗聴に強く、Apache 2.x 系であれば最初から利用可能です。最近の WWW ブラウザもほとんど対応していますので、Basic 認証を使う必要はほとんどありません。Digest 認証を使いましょう。
認証ファイルの生成
まず、ID とパスワードの情報が格納されるファイルを作成します。Basic 認証ではパスワードの情報を htpasswd コマンドで作成していましたが、Digest 認証では htdigest コマンドを利用します。
# htdigest -c passwd_file realm user_name
次に、.htaccess ファイルを認証が必要なディレクトリに配置します。httpd.conf で設定しても構いません。
AuthDigestFile /etc/httpd/conf/passwd_file AuthName realm AuthType Digest Require valid-user
これで WWW ブラウザのアクセス時に次のようなダイアログボックスが表示され、ID とパスワードの入力が求められます。使い勝手は Basic 認証と何ら変わりありません。Basic 認証と違うのは、htdigest コマンドで指定した realm と、.htaccess の AuthName が一致している必要があることです。
ちなみに、IP アドレスによる認証と併用したい場合は、.htaccess ファイルを次のように書きます。Basic 認証と基本的に同じです。
AuthDigestFile /etc/httpd/conf/passwd_file AuthName realm AuthType Digest Require valid-user Satisfy any order deny,allow allow from 192.168.1.0/24 deny from all
上記の例では、192.168.1.0/24 のネットワークからは認証なしでアクセスでき、それ以外からのアクセスは認証ダイアログが表示されます。




