Webサイトに公開しているけど不特定多数に見られては困るものってありますよね。そういったファイルを保護するために Basic 認証という仕組みがあります。簡単に言えばユーザーIDとパスワードを知っている人にだけ指定したディレクトリへのアクセスを許可するための仕組みです。
この記事では基本的な Basic 認証の設定方法を記載します。
全体の流れ
Basic認証は .htaccess ファイルでアクセスに関するルールを設定して .htpasswd ファイルに認証情報を設定することで実現できます。具体的な設定の流れは以下の通りです。
- アクセス制限したいディレクトリのフルパスを調べる
- 認証情報(ユーザーIDとパスワード)の作成
- 「.htaccess」と「.htpasswd」を作成して配置
1:ディレクトリのフルパスを調べる
レンタルサーバーを使用している場合は公開ディレクトリのパスがサーバー情報に記載されているはずなのでそれを確認します。そのパスに続いて制限したいディレクトリのパスを繋げます。大体以下のように /home/users/ などから始まっていると思います。
|
1 |
/home/users/xxxx/xxxx/制限したいディレクトリ |
php が使用できるサーバーであれば以下のように php ファイルを置いてブラウザからアクセスすることでサーバーの情報を出力して確認することもできます。
|
1 |
<?php echo __DIR__; ?> |
2:ユーザーID とパスワードを作成
認証情報として .htpasswd に記載する情報はユーザーIDと暗号化したパスワードです。構成は : 区切りで ユーザーIDと暗号化したパスワードを 1行ずつ並べるだけです。
|
1 2 3 |
ユーザーAのID:ユーザーAの暗号化したパスワード ユーザーBのID:ユーザーBの暗号化したパスワード ... |
それらの情報は以下のフォームから作成できます。生成された情報は 3 で使用します。1つのユーザーIDを複数人で使い回すことは問題の温床になりかねないので必ず人数分用意しましょう。
3:.htaccess と .htpasswd を作成して配置
まずは .htpasswd と名付けたファイルを作成して 2 で作成したユーザーID と暗号化したパスワードを 1行ずつ .htpasswd へコピー&ペーストします。
続いて .htaccess と名付けたファイルを作成(既にあればそれに以下の項目を追記します)して以下の項目を追記します。
|
1 2 3 4 5 6 7 8 |
<Files ~ "^\.(htaccess|htpasswd)$"> Deny from all </Files> AuthType Basic AuthUserFile /アクセス制限したいディレクトリのフルパス/.htpasswd AuthName "認証画面に表示する文章" Require valid-user |
ここでは、最初の3行で外部からの .htaccess ファイルと .htpasswd ファイルへのアクセスを禁止して、続く Auth~ の部分で Basic 認証の設定をしています。
具体的には AuthUserFile で認証情報が記載されたファイル(.htpasswd)の場所を記載して、AuthName で表示する文章を設定しています。 AuthType と Require は一律でこう記載すると考えてください。
最後に作成した .htaccess と .htpasswd を Basic認証を設定したいディレクトリへアップロードします。
以上で設定は完了です。
設定の確認
ブラウザから Basic認証を設定したディレクトリへアクセスすると認証ダイアログが出てくるので設定したユーザーIDとパスワード(暗号化前のパスワードです)を入力して認証が通ることを確認してください。
認証が通らない場合には .htaccess に記載した .htpasswd ファイルのフルパスが間違っているか、.htpasswd に記載した認証情報を間違えている可能性があるので確認してみてください。