ApacheでDigest認証をしよう

Apacheでユーザー認証できるようにしましょう。
Apacheでユーザー認証をする場合、認証したいディレクトリに.htaccessファイルを置くことで実現します。
基本設置のページにも書きましたが.htaccessとはApacheの動作をディレクトリ単位で操作するためのファイルです。
実際にはhtpasswdにユーザー名とパスワードを、htaccessに条件を書き込んでいきます。

.htpasswdファイルを作成する
htpasswdファイルの作り方は、コマンドプロンプトから作るちょっとなじみのない方法です。
スタートメニュー、すべてのプログラム、アクセサリ、コマンドプロンプトを開いてください。
もしくは

WindowsのApacheでDigest認証

スタートメニューの中からファイル名を指定して実行します。


WindowsのApacheでDigest認証

cmdと書き込んでOKを押すとコマンドプロンプトが立ち上がります。


WindowsのApacheでDigest認証

まずはcd C:\Program Files\Apache Group\Apache2\binと打ち込んでEnterを押します。
多分cdはChange Directory・・・なんだと思います。
やってることはコマンドプロンプト上でC:\Program Files\Apache Group\Apache2\binに移動したんですね。


WindowsのApacheでDigest認証

htdigest -c c:\mns.htpasswd mns kokoと打ち込みEnterを押します。
それぞれの単語の意味を解説します。
htdigest これはプログラム名です。実際C:\Program Files\Apache Group\Apache2\binにはそういうファイルが存在します。
-c create、新たにhtpasswdファイルを作りますよ、というオプションです。既にhtpasswdが存在し、それを編集する場合にはこの-cオプションはつけません。
c:\mns.htpasswd 実際に作成したhtpasswdファイルの名前と保存先を表します。
mns AuthNameです。ここの設定と.htaccessのAuthNameが一致しないと認証に失敗します。
koko お待たせしました、これがやっと認証したいユーザー名になります。


WindowsのApacheでDigest認証

パスワードを2回入力します。尚パスワードに:は使えません。

以上でhtpasswdの作成は完了しました。
入力したようにC:\にはmns.htpasswdというファイルが存在するはずです。

.htaccessファイルを作成する
今度はhtaccessファイルを作成していきましょう。
適当なエディタを開いて以下の分を書き込み、mns.htaccessで保存します。
#より右側は書き込まないでくださいね。

AuthUserFile D:/Apache/mns.htpasswd #パスワードファイルの位置およびファイル名を指定します。
AuthName "mns" #認証要求画面にメッセージ表示されます。htpasswdのAuthNameと一致しないと認証に失敗します。
AuthType Digest #認証方式です。Basic認証というのもありますが、Basic認証は盗聴された場合即刻ユーザーIDとパスワードが漏れてしまうのでDigest認証を用います。
require valid-user #アクセスするすべての人ををユーザー認証の対象にします。

いよいよアップロード
あとは制限したいフォルダに.htpasswdと.htaccessをアップロードするだけで認証できるようになります。


WindowsのApacheでDigest認証

認証したいフォルダにアクセスしたときにはこのようなダイアログが表示されて、認証を求められます。

なお今回は誰もがhtaccessを利用してユーザー認証をできるようにしました。
誰もが=サーバー管理者がわざわざhttpd.confに設定を書き込んだりすることもなく、ユーザーが自ら設置することができる方法です。
しかし、httpd.confに書き込んだ方がサーバーへの負荷はありませんので、あなたがサーバー管理者ならばhtaccessに書き込んだことを直接ディレクトリ指定をしてhttpd.confに書き込んでやりましょう。

お疲れ様でした。