BASIC認証は認証情報が平文で流れるので、通信経路で簡単に盗聴されてしまう。
そこで、サーバが返した乱数を素に認証情報をハッシュして送るダイジェスト認証の出番だ。
Apache 2.0系のmod_auth_digest のソースは、modules/aaa にある。
apxs コマンドでコンパイルとインストールを行う。
# cd modules/aaa && apxs -i -a -c -D DEV_RANDOM mod_auth_digest.c && cd -
パスワードの生成には、htdigest コマンドを使用する。
realmには、AuthName で指定する文字列を入力する。
# htdigest -c ./etc/httpd/htpasswd/.site.htdigest 'realm' user
IE6+ダイジェスト認証でGETクエリが使えないバグに対処するため、
httpd.conf か.htaccess に以下の設定を入れておく。
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
挙動を追ったところ、Authorization ヘッダにGETクエリが載っていないようだ。
BASIC認証と違いハッシュする手間が入る分、他にも意図しない挙動をするクライアントが存在するようだ。
現状では無理にダイジェスト認証を使うよりも、SSLで経路を暗号化したほうが良さそうだ。
コメント