コンテンツのパスワード保護(基本認証)

Apache環境においてウェブサーバー上の特定のファイルまたはディレクトリへのアクセスに対し、パスワード入力によるユーザー認証(基本認証)を必要とするように設定する方法を解説する。基本認証方式はユーザ名とパスワードテキストの入力を求め、入力された情報がサーバー側の記録と一致すればアクセスを許可する簡易なもので、ほとんどのブラウザが標準で対応しているため、これを用いることで簡単にユーザ認証を設けることが出来る。

Windows XP + Internet Explorer6で
表示される認証ダイアログ

基本認証のセキュリティレベル

HTTP+基本認証は、パスワードがクリアテキストで送受信されるため、盗聴や改ざんの恐れがあり重要な認証には適さない。より高いセキュリティレベルが必要な場合はSSL(HTTPSなど)など通信が暗号化されるプロトコルの利用を検討する必要がある。しかし一般ユーザ向けの簡易な認証方式としては、HTTP+基本認証でも十分機能を果たす。

.htpasswdファイルの作成

基本認証方式でユーザーのパスワード認証を行うには、まず認証情報を保存する".htpasswd"ファイルを作成、サーバーにアップロードする必要がある。このファイルは「ユーザ名」と「パスワードを暗号化した文字列」を列挙したテキストファイルで次のようになっている。

# .htpasswdファイル
# ユーザー名:暗号化パスワード
user1:/h0iSByVVHN6I
user2:esH.CzKQna1OU

暗号化パスワードは元の平文パスワードをUNIX-crypt関数で暗号化した文字列で、この部分は自分で用意する必要がある。ユーザ登録作業を端末コンソール上で手動にて行う場合は、Apacheに付属の"htpasswd"コマンドを用いることで、これらは半自動化して行うことが出来る。

.htpasswd作成Flashツール(DES-crypt)
このツールを用いると.htpasswdファイルを自動的に生成することが出来ます。ユーザ名とパスワードを入力して[ADD]ボタンを押して下さい。.htpasswdに記述する内容が下のテキスト領域に表示されます。

*利用には最新版のFlashPlayerが必要です
*サポートする暗号化はDES-cryptのみです。MD5-cryptの暗号化が必要なWindows版のApacheやBSDのサーバなどでは使用できません。

.htaccessファイルの設定

パスワードファイルが用意できたら、あとは.htaccessに認証を有効化するディレクティブを記述する。

# .htaccessファイル
# 認証方式
AuthType Basic

# パスワード入力ダイアログに表示されるメッセージ
AuthName "WELCOME"

# パスワードファイル(指定は絶対パス)
AuthUserFile /home/~user/.htpasswd

# ユーザーグループ  
AuthGroupFile /dev/null

# 特定のファイルへのアクセスに対する認証
<Files admin.htm>
	require valid-user
</Files>

# 特定のディレクトリへのアクセスに対する認証
<Directory admin>
	require valid-user
</Directory>