本記事では、Webサイトのとあるディレクトリ以下をパスワードで保護したいときに、認証によりアクセス制御する方法をまとめる。
認証方式にはいろいろある。おそらく最も基本的なのはBasic認証だが、パスワードを平文のまま送信するので、盗聴の危険性がある。そこで、今回は、MD5でハッシュ化してパスワードとユーザ名を送信するDigest認証を使ったアクセス制御をまとめる。参考URL:「Digest 認証の仕組み」。
まず、Webサーバで公開しているディレクトリで、パスワードで保護したいディレクトリを作成する(既にある場合はもちろん作成不要)。ここでは、ユーザ(hoge)のpublic_html以下をWebに公開しており、その直下のprivateをパスワード保護する場合を説明する。
$ cd $ pwd $ /home/hoge $ cd public_html $ mkdir private
次に、apacheの設定ファイル/etc/httpd/conf/httpd.confでDigest認証をどこそこで利用するといった設定を記述する。保護したいディレクトリ毎にhtaccessファイルを配置してもよいが、大元のhttpd.confに記述しておくの良いとどこかに書いてあった(保守性?)。
<Directory /home/*/public_html/private> <--- 念のためhogeユーザだけでなく任意のユーザに対してルールを設定 AuthType Digest AuthName "Secret Zone" AuthDigestDomain /private/ AuthUserFile /etc/httpd/conf/.htdigest <--- 後で作成するパスワードファイル Require user ユーザ名 </Directory>
次に、パスワードファイルを作成する。既にパスワードファイルがある場合は、cオプションは不要。cオプションを付けないと、新規ユーザの情報を書き込むことになる。レルムは、httpd.confでAuthNameに設定した文字列"Secret Zone"を指定する。パスワードファイル名も、上の設定ファイルで指定した名前とする。
# cd /etc/httpd/conf # htdigest -c パスワードファイル レルム ユーザー名
最後に、apacheをリロードする。
#/etc/rc.d/init.d/httpd reload
試しに動かしてみる。うまく動かないときは、AllowOverride all になっていないか確認する。
0 コメント:
コメントを投稿