特定のサイトにアクセスすると,次のような認証ウィンドウがポップアップした経験がないだろうか。特定のユーザーだけにアクセスを許したい場合,このような制限をかけた仕掛けを作っておくのがよい。
一般的に,このウィンドウが表示されるとユーザー名とパスワードが分からなければアクセスすることができない
手順は次の通りだ。
1. httpd.confでAllowOverride設定を確認
2. htpasswdコマンドでパスワード認証ファイルを作成する
3. 認証させたいディレクトリに置くアクセス設定ファイル「.htaccess」を作る
4. .htaccessを適所にコピーする
それぞれの詳細手順を解説していこう。
httpd.confの設定を確認する
</Directory> Options FollowSymLinks AllowOverride None <Directory/> |
httpd.conf内に上記の個所を見つけよう。標準ではこのようになっているはずだ。これを,一般ユーザーで自由にアクセス設定ができるようにするには,次のようにすればよい。
<Directory/> Options All AllowOverride All </Directory> |
上記のように,OptionsをAllにすることですべての機能が使えるようになり,AllowOverrideをAllとすることで,一般ユーザが設定を変えられるようになる。ここではすべての機能を許可したが,場合によっては必要に応じて許可するようにしよう。
パスワードファイルを作る
# /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.