.htaccessでのBasic認証設定方法とユーザー管理
2007.08.06
error この記事は最終更新日から17年以上が経過しています。
Basic認証をかけるためには、.htaccessに記述する前に、認証用のユーザー名と暗号化されたパスワードの記述されたファイルを作成する必要があります。
SSHまたはtelnetでサーバーにログインし、任意のディレクトリに移動した後、以下のコマンドでパスワードファイルを作成します。
% htpasswd -c password.dat Amethyst
New password:password
Re-type new password:password
#-- 下記はレスポンス
Adding password for user Amethyst
password.datはパスワードファイル名。任意のファイル名を設定すること。
Amethystは設定するユーザー名。任意のユーザー名を設定すること。
passwordは設定するパスワード。任意のパスワードを設定すること。実際には入力したパスワードは表示されない。
上記作業が終わると、ユーザー名:Amethyst、パスワード:passwordのパスワードファイル password.dat が作成されます。
上記パスワードファイルにさらに別のユーザーを追加する場合は、htpasswdコマンドに -c オプションをつけずに実行すれば良いです。
% htpasswd password.dat Sapphire
New password:abcdefg
Re-type new password:abcdefg
#-- 下記はレスポンス
Adding password for user Sapphire
とすれば、さきほど作成したパスワードファイル password.dat にユーザー名:Sapphire、パスワード:abcdefgの情報が追加されます。
なお、htpasswdコマンドで作成したパスワードファイルのフォーマットは、
ユーザー名:パスワード(暗号化済)
という形式で1ユーザーにつき1行ずつ記述されるので、perlのcrypt関数等を利用して、cgiを経由して作成することもできます。
なので、telnetやSSHでのログインが許可されていないレンタルサーバー等を利用している場合も、こういうやり方をすればパスワードファイルは作成できます。
さて、パスワードファイルを作成したら、次はBasic認証をかけたいディレクトリに、以下を記述した.htaccessを設置します。
AuthUserFile /home/amethyst/data/pass/password.dat
AuthGroupFile /dev/null
AuthName "Input Your Name And Password"
AuthType Basic
<Limit GET POST HEAD>
require valid-user
</Limit>
- AuthUserFile
- 先ほど作成したパスワードファイルのパスを指定します。
- AuthGroupFile
- グループファイルによる認証を行なう時に使用。
単にユーザー名とパスワードだけで認証を行なう場合は /dev/null (未定義)としておけばOK。 - AuthName
- ユーザー名・パスワード入力用のウィンドウに表示させるメッセージ。
スペースを含む場合はダブルクォーテーションで囲む必要がある。
2バイト文字を使用すると多分文字化けする。 - AuthType
- 認証のタイプ。Basic認証をかける場合は Basic とする。
- <Limit method>~~</Limit>
- methodの部分に、認証をかけたいメソッドを指定。
GET,POST,HEADの各メソッドに対して認証をかけたい場合はGET POST HEADとする。
メソッドを指定しない場合は、<Limit>~~</Limit>は記述しなくて良いはず。 - require
- 認証するユーザーを指定する。パスワードファイルに記述したユーザー全てに対して認証を行なう場合はvalid-userとする。
特定のユーザーのみを認証する場合は、そのユーザー名を記述する。上記の例の場合、Amethystと記述しておけば、ユーザー名Sapphireで正しいパスワードを入力しても、認証は通らない。
この.htaccessを認証をかけたいディレクトリに設置すれば、そのディレクトリ及び下位ディレクトリに対して、Basic認証が働くようになります。
.htaccessで特定のディレクトリのみ「/」を「/index.html」にリダイレクトさせる
2023.05.09
指定したディレクトリのみ、トップページへのアクセスを/index.htmlにリダイレクトさせる方法を紹介します。
.htaccessを使ったリダイレクト設定方法—URI変更時の対応を簡単に
2023.05.01
Webサイトの構成変更や移転時に便利なリダイレクト設定方法をご紹介します。.htaccessを使って、URIが変更になった場合でも旧ページから新ページへスムーズに転送できるように設定する方法を解説します。
IPアドレスでアクセス制限する方法を.htaccessで実装
2023.04.07
.htaccessを使って、特定のIPアドレスからのアクセスを制限する方法を紹介します。指定したIP以外のアクセスをブロックしたり、逆に特定のIPを拒否する方法も解説。さらに、Requireディレクティブを使った設定方法も合わせて紹介します。
さくらのレンタルサーバーでPHPを「.html」などの拡張子で実行する方法
2009.09.20
さくらのレンタルサーバーでは、PHPがCGIとして動作しているため、通常の.htaccess設定ではPHPを「.html」拡張子で実行できません。この記事では、特定の手順を踏んでPHPを動作させる方法を詳しく解説します。