【簡単に設定】Basic認証のかけ方

Coding

Webサイトへのアクセスを簡易的に制限する、Basic認証の設定手順について書いていきます。

認証をかけたいディレクトリのフルパスを調べる

htaccessファイルを作成する際に、サイトのフルパスを記述する必要がありますので最初に調べます。
参考:フルパスについて

PHPファイルの作成
フルパスを調べるために使うPHPファイルを作成します。
テキストエディタで任意の名前のPHPファイルを作成しましょう。
今回は「sample.php」というファイル名で作成します。
ファイル内には下記の3行を記述して保存してください。

// sample.php内

<?php
  echo __FILE__;
?>

参考:マジック定数

サーバーにアップロード
「sample.php」をフルパスの知りたいディレクトリにアップロードします。
例として「example.com」のフルパスを調べるとします。

exampleファイルの構造は以下↓

exampleファイル直下に「sample.php」をアップロードしてください。

PHPファイルにアクセス
example.com/sample.phpにアクセスしましょう。
問題が無ければ白い画面左上に、
/home/[サーバーID]/example.com/public_html/sample.php
と表示されます。(エックスサーバーの場合)
※契約しているサーバーによってパスの表示は異なります。

使用するのは「sample.php」ファイル直前までの
/home/[サーバーID]/example.com/public_html」のパスになります。

PHPファイルは削除してください

フルパスを調べるために使用したファイル(sample.php)は、そのままにしておくと外部からアクセスされた場合、パスの情報が漏れてしまうので必ず削除してください。

.htaccessファイルを作成

ここではBasic認証を設定するためのファイルを作成します。
テキストエディタで「.htaccess」ファイルを作成しましょう。
中身には下記を記述して保存します。

//.htaccess内

AuthUserFile (先ほど調べたフルパス)/.htpasswd
AuthGroupFile /dev/null
AuthName "Input ID and Password."
AuthType Basic
require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
  deny from all
</Files>

ひとつひとつ解説

AuthUserFile
後に作成する「.htpasswd」までのパスを記述します。
先ほど調べた「/home/[サーバーID]/example.com/public_html」を貼り付け、その後に「/.htpasswd」を追記します。

AuthUserFile /home/[サーバーID]/example.com/public_html/.htpasswd

AuthGroupFile
グループ毎で認証する際に使用しますが、ユーザー毎の認証では使わないので、ここは「/dev/null」を記述します。

AuthGroupFile /dev/null

AuthName
ダイアログに表示される文字列(半角英数推奨)を指定します。
ブラウザによっては表示されません。
下記の場合は「Input ID and Password.」と表示されます。

AuthName "Input ID and Password."

AuthType
認証方法を指定します。
Basic認証を使うので「Basic」と記述します。

AuthType Basic

require
「valid-user」はIDとPasswordを知っている全ユーザーにアクセスを許可する設定です。

require valid-user

deny from all

<Files ~ "^.(htpasswd|htaccess)$">
  deny from all
</Files>

ブラウザから「.htpasswd」「.htaccess」にアクセスできないようにする記述です。
パスワードなどの重要な情報を記述しているので、他人に見られないようにします。
参考:Apache モジュール mod_access_compat

.htpasswdファイルを作成

ここではIDとPasswordを格納するためのファイルを作成します。
設定したいIDとPasswordを決めましょう。
今回は例として、IDを「basic」、Passwordを「password」にします。
次に決めたPasswordを暗号化する処理を行います。
暗号化ツールはいくつかありますが、
今回は「htpasswd file generation」を紹介します。

IDとPasswordを入力して「生成」ボタンを押すと、「.htpasswd:」右の欄にIDと、暗号化されたPasswordが出力されるのでコピーします。

テキストエディタで「.htpasswd」ファイルを作成し、コピーしたIDと暗号化されたPasswordを貼り付けて保存します。
下記はIDが「basic」で、「o3zw9.FixeVU2」が「password」を暗号化した文字列です。

//.htpasswd内

basic:o3zw9.FixeVU2

アップロードと確認

「.htaccess」と「.htpasswd」を、サーバーの認証をかけたいディレクトリにアップロードしましょう。

サイトにアクセスしてみましょう。
下記のように表示されれば成功です。
IDとPassword(暗号化していない方)を入力してサイトに入れるか確認しましょう。

まとめ

今回は手動でBasic認証を設定する方法を紹介しました。

  1. フルパスを調べる
  2. htaccessを作成
  3. htpasswdを作成
  4. アクセスしてIDとPasswordを入力

ただレンタルサーバーの管理画面からもBasic認証の設定ができるので、そちらの方がさくっと済ませられます。
一度自身の使っているレンタルサーバーを調べてみるといいかもしれません。

どうしても手動でやる必要が出てきたという時に、こちらの記事を思い出していただけると幸いです。