.htaccessファイルを使用したユーザ認証方法

ユーザ名とパスワードを使い、ディレクトリ全体にアクセス制限をします。「.htaccess」ファイルを使用したユーザ認証は、簡単に設置することができ、暗号の強度もそこそこ強いものとなっています。しかし、ネットワーク上を平文同様の形式(分かりにくくするために Base64方式でエンコードされていますが、これは暗号化ではありません)で流れるために、オンラインショッピングやインターネットバンキングなど、高度な商業的セキュアを実現したいときには不向きです。では、実際に「.htaccess」ファイルへの記述方法を見てみましょう。

AuthUserFile /home/public_html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user

この記述によって、「これ以降のディレクトリにおいて、全てのユーザに対して Basic 方式でのユーザ認証を行いなさい」と命令しています(AuthUserFile リファレンスAuthGroupFile リファレンスAuthName リファレンスAuthType リファレンスrequire リファレンスを参照)。

ここで、「.htpasswd」と言う新たなファイルを作成してやる必要があります。これは、ユーザ認証のためのユーザIDとパスワードの一覧表みたいなものなのですが、このファイルが誰からでも閲覧可能であればパスワードをかけてユーザ認証を行う意味がなくなります(多少の意味はあるのですが、この状況のままでは金庫に100円の錠で鍵をかけているようなものです)。「.htpasswd」ファイルをサーバのドキュメントツリー下に置かない。「.htaccess」ファイルへ「.htpasswd」ファイルの閲覧を拒否させる記述を加える。のいずれかの方法を取り、尚且つ「.htpasswd」ファイルのパーミッションは「604」にしておくことをお奨めします(パーミッションについては「パーミッションの話」を参照ください)。

次に「.htpasswd」ファイルの作成方法を見ていきましょう。よく「telnet」接続での「.htpasswd」設置方法が紹介されているのですが、これは初心者には敷居が高い方法だと思います。また、レンタルのWebサーバによっては telnet 接続を許可していない場合もありますので、手動で設置する方法をここでは紹介します。とりあえずは、ローカルにて「.htpasswd」ファイルを作成して下さい。このファイルもテキストファイルとなっていますので、メモ帳等のテキストエディタから作成できます。「.htpasswd」の中身ですが、一行一行が、一人のユーザに対応しています。

Key: 6H99VDuhj6Gcc
guest: S29JCEon7bbHc

のように、ユーザ名と暗号化されたパスワードをコロンで区切って記入して下さい。こうしてできあがった「.htpasswd」ファイルを「AuthUserFile」で指定してあるディレクトリにアップすれば、それだけで完了です。