ダイジェスト認証を使うメリットと使用方法
2017年10月16日
特定のサイトや、公開していない特定のディレクトリに閲覧制限をかけるときによく使われるのが基本認証(basic認証)です。
ただし、基本の認証方法の問題点として、パスワードが平文で送信されてしまうというものがあります。
このため、公衆無線LANなど暗号化されていない場合、かつ非SSLのようなサイトで基本認証のみに頼るのはセキュリティ的に問題があるといえます。
この問題点を解消しているのがダイジェスト認証です。
認証をかけているサイトにアクセスした場合、IDとパスワードを入力するとアクセスすることができるのは同じですが、パスワードが暗号化されて送信されるため、基本認証よりもセキュリティ的に安全性は高いといえます。
ただし、問題点としては基本認証に比べると新しいためか一部の古いブラウザなどに対応していないことです。
ただし非対応ブラウザがIE5以前とか、古いガラケーなどということで、多くの人が通常使用しているブラウザには概ね対応しているということなので、開発用に使用するにあたってはそれほど大きな問題とは言えないと思います。
なお、対応していないブラウザでアクセスした場合はエラーを返してアクセスはできないようです。
また、サーバによっては使用できない場合もあるそうなので、その場合はApacheであればhttpd.confの設定を一行変更することで使用できるようになります。
LoadModule auth_digest_module modules/mod_auth_digest.so
上記記述(最初からある)がコメントアウトされていなければ問題なく使用できます。
設定方法に関してですが、基本認証と同じように .htaccessに記述する方法で設定できます。
AuthType Digest AuthName "auth" #認証名 AuthUserFile /サーバのルートパス/.htpasswd #パスワードファイルの保存場所 Require valid-user
ほとんど基本認証と変わりませんね。
.htpasswdの記述方法に関しては、以下のように書きます。
ユーザ名:認証名:暗号化したパスワードフレーズ
例えば、以下の例であれば
user:auth:password
パスワードの部分には、上記の文字列を(user:auth:も含めて)そのままMD5暗号化したものが入ります。
上記の例であれば
user:auth:4481f9057c05e4c3c85c52d9d7dee0f0
が入るわけです。
設定方法は以上になります。
基本認証よりはセキュリティ的に強度は高いので、問題がなければ基本認証よりはダイジェスト認証を使うので良いのではないかと思います。