Digest認証

これまでWebの認証というとフォーム認証やらベーシック認証しか使ったことがなかった。きょうははじめてDigest認証設定してみたというお話。

ベーシック認証はパスワードがほぼ平文で流れるので、そもそも大事な用途にはSSLを組み合わせないと危険だ。それに、そこで使うパスワードも最悪盗まれても被害が拡大しないようにそこそこいい加減なものを使う必要があった。(オンラインバンクとかと同じもの設定しちゃヤバイ)

まあ、そういうわけでアプリ屋な私は、

    • Webアプリ書くときはフォーム認証
    • 適当なファイル置き場として使うときはベーシック認証。
    • 重要な内部ファイル置き場として使うときは・・どうしよっかなぁw

的な対応をしていた。

まあ世の中にDigest認証ってのがあってパスワードが暗号化されるやつがあるということは知っていたが、その存在を初めて知ったころは「でもまだブラウザが対応してない」というオマケ情報つきで覚えたので「まだ使えねぇ技術」とラベルを貼った状態で頭の中に格納されていた。

まあ、そして月日はたって今「そういやDigest認証ってもう使えるんじゃね?」とその存在を思い出したので、ググってみたところ、結構昔からApacheもブラウザも対応していたw ということで、早速ダイジェスト認証やってみたです。

設定方法

設定方法ははベーシック認証とほとんど同じ。htpasswdコマンドの変わりにhtdigestというコマンドでパスワードファイルを作る点と、Apacheの設定ファイルに記述する内容がちょっと変わるという点のみの違いです。でも一箇所躓いたのでそれについて書きますと、Apache 2.0系と2.2系でパスワードファイルを指定するディレクティブの名前がちょと違っているから注意って感じです。

2.2系
AuthUserFile /passwd/file/path
2.0 系
AuthDigestFile /passwd/file/path

具体的には、私は2.2で試したんだけど、2.0系を前提にした誰かのブログ情報をもとにAuthDigestFileと書いて設定してしまったので、「そんなん知らん!モジュール入れ忘れとちゃうか?」的エラーが出てしまった。

結論

まあいいや、結論

「Digest認証、ブラウザ対応してない」って、いつの話じゃ!
今のブラウザなら普通に使える(IEなら5以降)ので、Basic認証はもうやめよう