WEBの勉強ノート
Loading

会員専用ページに、Apache の Basic 認証を使う

2010 年 1 月 13 日 カテゴリー: .htaccess

ほとんどのレンタルサーバーでは Basic 認証を GUI で設定できるツールを用意されていると思いますが、そういった
ツールがない環境で設定する機会があったので、メモしておきます。作業はssh で接続して行いました。

設定方法

.htaccess ファイルの作成

[centos@localhost temp]$ vi .htaccess
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /var/www/html/temp/.htpasswd
Require user test

.htpasswd ファイル(パスワードファイル)の作成

[centos@localhost temp]$ htpasswd -c /var/www/html/temp/.htpasswd test
New password:
Re-type new password:
Adding password for user test

以上の手順だけで、ドキュメントルート以下の temp ディレクトリに Basic 認証をかけることができました。

Basic 認証を昨日させているモジュール

Apache 2.1 より前のバージョンでは、mod_auth によって Basic 認証機能が実装されている模様。そのため、Basic 認証を使うには、httpd.conf で mod_auth.so が読み込まれていることが必要。

LoadModule auth_module modules/mod_auth.so

Apahe 2.1 以降では、mod_auth_basic モジュールで実装されているようです。今回は Apache 2.0 を使っているので、こちらは確認していません。モジュールのインストールから始める必要のある環境は、通常の WEB サーバーであれば、ほとんどないのではないかと。

その他必要な設定

Basic 認証の設定を書き込む場所は、Apache の設定ファイルである httpd.conf に直接書くか、該当のディレクトリに .htaccess ファイルを設置する方法の 2通り。.htaccess を使う場合は、httpd.conf に以下の設定が必要です。

AllowOverride AuthConfig

もちろん、AllowOverride All でも。 普段は、httpd.conf を触ることはしないので、.htaccess を設置しました。 httpd.conf で設定を行う場合でも、設定項目は同じです。

使用したディレクティブ

AuthType : ユーザ認証の種類を指定。BasicかDigestを指定。
AuthName : ここで AuthName に指定した文字列が、大部分のブラウザのパスワードダイアログに表示される。
AuthUserFile : 認証に使用するユーザとパスワードの一覧が格納されている、テキストファイルの名前を設定。
Require : 認証に使用するユーザー名を指定。

htpasswd コマンド

パスワードファイルの作成に必要なコマンド。Apache に付属します。以下の構文で実行します。

htpasswd -c Filename username

書式が分かれば手入力でも作成はできるが、通常はこのコマンドを使う。主なオプションは、 以下の通り。

-c : 新しいパスワードファイルを作成。同名のパスワードファイルがすでに存在する場合は、既存の内容が上書きされる。
-n : テスト実行用のオプション。他のオプションなどの構文エラーがないかなどの確認に用いる。-c と一緒に使うことはできない。
-m : パスワードをファイルに書き込む際、MD5 でハッシュした値を書き込みます。
-d : パスワードをファイルに書き込む際、CRYPT でハッシュします(デフォルト)。
-p : パスワードをファイルに書き込む際、ハッシュせずに、プレーンなテキストで書き込みます。
-s : パスワードをファイルに書き込む際、SHA でハッシュします。
-D : ユーザーを削除します。

コメントをどうぞ