Digest認証を使ってみる

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

これで終わりです。

Google サイト内検索

Amazonアソシエイト