Apache による user 認証制限(BASIC 認証編)

はじめに

会員制のページや仲間内だけに公開したいページを作る場合にはユーザー名とパスワードを使った認証付きのページを作る必要があります。

ここでは最も一般的な .htaccess ファイルを用いたユーザー制限を説明します。

認証を必要とするディレクトリの指定

.htaccess で認証が出来るようにディレクティブ設定を行います。

ここでは /home/httpd/limit/public_html 以下のディレクトリを認証が必要なディレクティブに設定します。

/etc/httpd/conf/httpd.conf に

<Directory /home/httpd/limit/public_html>
   Options FollowSymLinks
   AllowOverride AuthConfig Limit
</Directory>

次にパスワード保護したいディレクトリに次のような内容の .htaccess ファイルを作成します。

※ここではユーザー名とパスワードには共に"guest"を登録します。

AuthType Basic
AuthUserFile /path/to/passwd
AuthName "Access My Limit Page"
<Limit GET>
  require user guest
</Limit>

ここではまず Authtype Basic で通常の認証方法を指定しています。

AuthUserFile

暗号化?したパスワードファイル名を指定します。

AuthName

認証の画面のポップアップウィンドウに表示されます。

Limit

ディレクティブでは認証が必要なリクエストの種類を指定する    (GET の他に PUT POST HEAD などがある)

require

認証を許すユーザー名を指定(今回はユーザ名に guest として登録)

passwordファイルの作成

.htaccess ファイルが作成できたら今度は認証に使用する passwd を作成します。作成すると言っても自分で書くわけではありません。

htpasswd と呼ばれる passwd ファイルを作成するコマンドを使用します。

入力するコマンド書式

$ htpasswd -c /path/to/passwd guest
New password:
Re-type new password:

ここではユーザ名 guest に対するパスワードを設定しております。 このコマンドを実行すると設定するパスワード(任意)を2回聞かれますので間違えずに入力します。

これで /path/to/passwd が作成されている事を確認して下さい。

※-cの意味は passwd ファイルを初めて作成する場合に使用する。

別のユーザーを追加する場合はこれを付けずに作成すること

※passwd ファイルを作成する場所は www 経由で見ることの出来ない場所に作成すること。

passwd ファイルに書かれているパスワードはプレインテキストをMIMEエンコードした文字列なので元に復号することも可能なため絶対にpublicな場所には置かないようにして下さい。

passwd ファイルのパーミッションは apache が動作している権限にあわせて下さい。

www ユーザで動作している場合は

# chown www:www /path/to/passwd
created:

Back to top