2012年10月13日土曜日

.htpasswdの作成と.htaccessによる認証(アクセス制御)


.htpasswdの作成

.htpasswdファイルの保存場所は、public_htmlより上位フォルダへ作成。
.htpasswdファイル用の適当なフォルダを作成しておくとよい。

新規作成の場合は、"-c" オプションを付ける。
user1 を作成
# htpasswd -c /home/user/pwd/.htpasswd user1


パスワードを入力すると.htpasswdに user1 が作成される。

# New password:
# Re-type new password:
# Adding password for user user1





ユーザを追加する場合は、"-c" オプションは付けない。(-c をつけると以前の情報が消えてしまう)
user2 を追加する
# htpasswd /home/user/pwd/.htpasswd user2


また、パスワードの変更は同様の手順で上書きされる。
user1 のパスワードを変更

# htpasswd /home/user/pwd/.htpasswd user1





.htaccessの作成

.htaccessはアクセス制御を行いたいフォルダに置く。例えば、.htpasswdを利用したパスワードを設定したいだけなら、下のようになる。

AuthUserFile /home/user/pwd/.htpasswd
AuthGroupFile /dev/null
AuthName "Secure site"
AuthType Basic
require valid-user


各項目の概略

AuthUserFileパスワードファイルの場所
AuthGroupFileグループファイルの指定、必要ないので "/dev/null"
AuthName認証時のメッセージ
AuthType認証方法、Basic認証を指定
requirevalid-userは全てのユーザ、"user [username]"で任意のユーザ


また、Basic認証とIPアドレスによる認証を行いたい場合は下のように記述する。


Order Deny,Allow
Deny from all
Allow from 192.168.1
Allow from 127.0.0.1

AuthUserFile /home/user/pwd/.htpasswd
AuthGroupFile /dev/null
AuthName "Secure site"
AuthType Basic
require valid-user

上記は、指定したIPアドレスとBasic認証の両方が一致しなければアクセスできないようになる
どちらか片方の条件を満たしたら許可したい場合は、"Satisfy Any" の記述を加える。


Order Deny,Allow
Deny from all
Allow from 192.168.1
Allow from 127.0.0.1

AuthUserFile /home/user/pwd/.htpasswd
AuthGroupFile /dev/null
AuthName "Secure site"
AuthType Basic
require valid-user

Satisfy Any


また、携帯やスマートフォンなどからの制御も行いたい場合は次のような記述方法もある。

SetEnvIf X-UP-SUBNO ^05001234567890_ag\.ezweb\.ne\.jp$ mobilephone
SetEnvIf X-UP-SUBNO ^05012345678901_ae\.ezweb\.ne\.jp$ mobilephone
Order Deny,Allow
Deny from all
Allow from env=mobilephone
Allow from 192.168.1
Allow from 127.0.0.1

AuthUserFile /home/user/pwd/.htpasswd
AuthGroupFile /dev/null
AuthName "Secure site"
AuthType Basic
require user user1

Satisfy Any

上記は指定されたユーザ(user1)での au のサブクラスID の認証を加え、指定された契約者IDの端末または指定されたIPアドレスで認証、それ以外はBasic認証によるアクセス制御となる。