.htaccessでパスワード認証
.htaccessファイルを使ってのパスワード認証を行う設定方法です。
検証環境
CentOS 5
# apachectl -v
Server version: Apache/2.2.6 (Unix)
Server built: Sep 18 2007 11:28:25
パスワードでWebページのアクセス制限
webサイトを作成していると、「ある特定の人だけにだけ閲覧を許可したい」という状況が出てくることがあります。
そういった場合にすぐに考え付く方法の一つが、「ユーザ名」と「パスワード」でアクセス制限を行う方法だと思います。
今回はその機能を.htaccessファイルを使用して実装します。
実際の手順としては、次のようになります。
- .htaccessファイル使用の許可
- .htaccessファイル作成
- .htpasswdファイルの作成
.htaccess使用の許可
.htaccessファイルを使用する場合、apacheで.htaccessファイルを使用できるように設定する必要があります。
今回は、アクセス解析ソフトwebalizerで作成したページのディレクトリに パスワード認証(ベーシック認証)を設定していく過程を例に解説していきます。
今回の環境では、webalizerが作成するhtmlファイルは/var/www/html/webalizer にデータが保存されています。
まず、このディレクトリ上で.htaccessファイルを使用できるようにapacheの設定変更を行います。
「/var/www/html/webalizer」の部分はご自分の環境ごと実際に.htaccessを使用したいディレクトリに読み替えてください。
# cp -p /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_yyyymmdd
# vi /etc/httpd/conf/httpd.conf
追加内容
Options 項目などは適宜設定してください。
<Directory "/var/www/html/webalizer">
AllowOverride All
</Directory>
※下記の例はサイト全体で.htaccessファイルを使えるようにする設定です。
<Directory />項目に「AllowOverride All」を設定してください。
<Directory />
Options None
AllowOverride All Order deny,allow Deny from all </Directory>
設定反映
apacheに設定を反映させます。
# /etc/init.d/httpd reload
これで/var/www/html/webalizerのディレクトリで「.htaccess」を使用できるようになります。
.htaccessの作成
apacheの設定変更が完了したら、次に「.htaccess」ファイルを/var/www/html/webalizerディレクトリに作成します。
# vi /var/www/html/webalizer/.htaccess
設定内容
AuthType Basic
AuthUserFile /var/www/html/webalizer/.htpasswd
AuthName "Input user and password"
AuthGroupFile /dev/null
Require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
deny from all
</Files>
.htaccessの解説
- AuthType 認証タイプを設定します。「Basic」と「Digest」があります。「Digest」を選択するとセキュリティはあがるのですが、
対応していないブラウザがあるので注意が必要です。
- AuthUserFile ユーザとパスワードが記述された.htpasswdファイルの場所を設定します。
- AuthName 認証ウィンドウに表示される文章を設定します。
- AuthGroupFile group認証を行うと二には、groupファイルを設定します。 /dev/nullだとグループ認証を行いません。
- Require どのユーザがWebページにアクセス出来るのかを設定します。
Require 設定値
| 設定値 | 説明 |
| user ユーザ名1 ユーザ名2 | 指定されたユーザ(userid)のみがアクセスが出来ます。 |
| group グループ名1 グループ名2 | 指定されたグループ(group-name)に属するユーザのみがアクセスが出来ます。 |
| valid-user | .htpasswdファイルで認証された、全てのユーザがアクセスが出来ます。 |
- <Files ~ "^.(htpasswd|htaccess)$">
deny from all
</Files> .htpasswdと.htaccessファイルを表示しないように設定しています。
.htpasswd(認証ファイル)作成
# htpasswd -c /var/www/html/webalizer/.htpasswd tamohiko
New password:
Re-type new password:
Adding password for user tamohiko
# chmod 644 .htpasswd
※.htpasswdファイルを新規作成の場合のみ -c オプションがいります。
認証用のユーザとパスワードが作成されていること確認してみます。
# cat /var/www/html/webalizer/.htpasswd
tamohiko:if7FSdfg3KlpE
認証ユーザの追加
# htpasswd /var/www/html/webalizer/.htpasswd tamo
New password:
Re-type new password:
Adding password for user tamo
こんな感じでユーザが追加されます。
# cat .htpasswd
tamohiko:if7FS8dO3KlpE
tamo:ZtWoMWBseY7yU
ユーザ情報の削除
.htpasswdファイルからユーザを消したい場合は、.htpasswdから削除したいユーザの行を消しちゃうだけです。
動作確認
実際にwebブラウザでアクセスすると、ユーザ認証画面が表示されます。
.htpasswdに設定したユーザ名とパスワードを入力して、認証が通ればwebページが表示されます。
間違った情報を入力すると、ページは表示されないはずです。
以上で.htaccessを使用したパスワード認証の設定は完了となります。