SyntaxHighlighter

2011年9月27日火曜日

Basic 認証のかけ方 (Apache)

/usr/local/apache が Apache のインストールディレクトリという前提。設定方法は 2.0.X, 2.2.X 共通。

まずは認証を通過させるユーザとパスワードのリストを作成する。

# /usr/local/apach/bin/htpasswd -c /usr/local/apach/conf/.htbasic ユーザ名
New password:パスワードを入力
Re-type new password:パスワードを入力
Adding password for user ユーザ名

-c は初回限定で付ける。追加登録時には -c は付けない。
/usr/local/apach/conf/.htbasic は作成するファイルのフルパスで、この通りでなくとも良いが、DocumentRoot 以下には置かないこと。また、ファイル名の .ht の部分は変えないことを推奨。先頭が . のファイルは Unix 系 OS では隠しファイルとして扱われ、-a なしの ls コマンドでは表示されないというメリットがある。また、.ht で始まるファイルは Apache の設定ファイルでデフォルトでアクセスを拒否する設定になっている。
ユーザ名 の部分は実際のユーザ名に置き換えること。OS に存在するアカウントである必要はない。

次に Apache の設定。メインの設定ファイルに直接記述する方法と、アクセスファイルを使う方法がある。
メインの設定ファイルに記述する場合のデメリットは1つだけで、編集後に Apache の再起動が必要になること。 アクセス制限をかけたいディレクトリがころころ変わったり増えたりする場合や、レンタルサーバ等でメインの設定ファイルを書き換える権限がない場合にはアクセスファイルを使用することになる。ただ、メインの設定ファイルを編集する方法に比べ、セキュリティ的にも劣るし、パフォーマンスも悪くなる

メインの設定ファイルを使用する場合は <Directory 制限をかけたいパス></Directory> の間に以下の記述を追加する。

AuthType Basic
AuthName "members only"
AuthUserFile /usr/local/apach/conf/.htbasic
Require valid-user

"members only" の部分は任意に変えて良い。認証用のダイアログボックスに表示される。
/usr/local/apach/conf/.htbasic は htpasswd で作成したファイルのフルパス。
Apache を再起動すれば設定が有効になり、認証を求められるようになる。

アクセスファイルを使用する場合は、まず最初にメインの設定ファイルの <Directory 制限をかけたいディレクトリを含むパス></Directory> の間で AllowOverride AuthConfig を記載する。(既に AllowOverride ディレクティブがある場合は、値が None であれば AuthConfig に変更。 それ以外の値の場合はスペースで区切って AuthConfig を追加)
Apache を再起動すれば、アクセスファイル(デフォルトでは .htaccess。AccessFileName ディレクティブで変更可能)が使用可能になる。
制限をかけたいディレクトリに .htaccess というファイルを作り、先程の内容(AuthType Basic~Require valid-user)を記載する。 ファイルを作成すれば即有効になる。

0 件のコメント:

コメントを投稿