Tips記事
» 2001年09月05日 00時00分 UPDATE

.htaccessで秘密の認証ページを作る

[木田佳克,ITmedia]

 特定のサイトにアクセスすると,次のような認証ウィンドウがポップアップした経験がないだろうか。特定のユーザーだけにアクセスを許したい場合,このような制限をかけた仕掛けを作っておくのがよい。

画面
一般的に,このウィンドウが表示されるとユーザー名とパスワードが分からなければアクセスすることができない

 手順は次の通りだ。

1. httpd.confでAllowOverride設定を確認
2. htpasswdコマンドでパスワード認証ファイルを作成する
3. 認証させたいディレクトリに置くアクセス設定ファイル「.htaccess」を作る
4. .htaccessを適所にコピーする

 それぞれの詳細手順を解説していこう。

httpd.confの設定を確認する
 まず最初に,サーバ(Apache)側で.htaccessが使用できるようになっているかを確認する必要がある。
</Directory>
Options FollowSymLinks
AllowOverride None
<Directory/>

 httpd.conf内に上記の個所を見つけよう。標準ではこのようになっているはずだ。これを,一般ユーザーで自由にアクセス設定ができるようにするには,次のようにすればよい。

<Directory/>
Options All
AllowOverride All
</Directory>

 上記のように,OptionsをAllにすることですべての機能が使えるようになり,AllowOverrideをAllとすることで,一般ユーザが設定を変えられるようになる。ここではすべての機能を許可したが,場合によっては必要に応じて許可するようにしよう。

パスワードファイルを作る
 htpasswdコマンドを使用してパスワード認証ファイルを作成する。ページにアクセスして認証ウィンドウから入力された文字列は,このパスワードファイル内容と照合される。「xxxxxx」はユーザー名だ。
# /usr/local/bin/htpasswd -c .htpasswd xxxxxx
Adding user xxxxxx
New password: xxxxxx
Re-type new password: xxxxxx

 ここで注意しておきたい点がある。それは,.htpasswdファイルを置いておく場所だ。このファイル内はDES暗号(FreeBSDではMD5)によって平文パスワードが記載されていないものの,できる限りhttpでアクセスできない場所に置いておくことが好ましい。具体的に挙げるとすれば,ホームページのトップ階層よりも1つ上のディレクトリだ。

 「/usr/local/apache/htdocs/」がホームページのトップ階層だとすると,「/usr/local/apache/」であれば,httpで見ることはできない。これは,後述する.htaccessの「AuthUserFile」項目でファイル指定をする。

 2つ目以降のユーザーアカウントを作成する場合には,「-c」パラメータを付加させないでよい。次のように指定しよう。もちろん前述した同じ.htpasswdファイルを指定する必要がある。

# /usr/local/bin/htpasswd .htpasswd xxxxxx

アクセス設定ファイルを作る
 次に,どのような条件でアクセスするかを設定ファイルに記述しよう。定型で構わなければ,次の内容のままでよいだろう。認証を行う目的は十分に達せられる。

# vi /usr/local/apache/htdocs/.htaccess
AuthType Basic
AuthName "Please enter username and password"
AuthUserFile /usr/local/apache/.htpasswd
AuthGroupFile /dev/null
<Limit GET POST>
require valid-user
</Limit>

 上記が,一般的な認証ができて幅広く利用ができる設定だ。この内容のファイルを作成して,認証を行いたいディレクトリに置けばよい。このファイルを保存したディレクトリ下には,すべて認証が必要になる。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ