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

公開日 : 最終更新日 :

  • コーディング

本記事では、Webサイトへのアクセスを簡易的に制限する「Basic認証の設定手順」について、解説します。

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

.htaccessファイルを作成する際に、Basic認証をかけたいディレクトリの『フルパス』を知る必要があります。

ちなみに、フルパスとは「絶対パス」のことです。一番上の階層もしくは一番外側を基準にして、2つ目3つ目などの該当のファイルまで道のりすべてを記述したものです。
参考:フルパスについて

以下、フルパスを調べるための3手順です。

1. PHPファイルの作成

フルパスを調べる方法として「PHP」を使う方法があります。

まずは、テキストエディターで任意の名前のPHPファイルを作成しましょう(本記事では「sample.php」というファイル名で作成します)。

作成したPHPファイル内には下記の3行を記述してください。

<?php
  echo __FILE__;
?>

参考:マジック定数

2. 作成したPHPファイルをサーバーにアップロード

フルパスを知りたいディレクトリへ、先ほど作成した「sample.php」ファイルをアップロードします。

以下例として、「example.com」のフルパスを調べる場合です。

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

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

3. アップロードした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」ファイルを作成しましょう。ファイル内には下記を記述します。

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を格納するための「.htpasswdファイル」を作成します。

1. 設定したいIDとPasswordを決める

まずは、Basic認証に設定したいIDとPasswordを決めましょう。任意で構いません。
今回は例として、IDを「basic」、Passwordを「password」にします。

2. 決めたIDとPasswordを暗号化処理

次に、決めたPasswordを暗号化する処理を行います。
今回は「htpasswd file generation」による暗号化を紹介します。

ツール画面上で、先ほど決めたIDとPasswordを入力して「生成」のボタンを押してください。

すると、すぐ下の方にある「.htpasswd:」の部分に暗号化した文字列が生成されます。「basic」がID、「o3zw9.FixeVU2」がpasswordを暗号化した文字列です。

3. 「.htpasswd」ファイルを作成し、暗号化処理された文字列を記述

テキストエディタで「.htpasswd」ファイルを作成してください。

そして、先ほど生成された文字列のみをそのまま貼り付けて保存してください。先ほどの例で言えば、basic:o3zw9.FixeVU2のみが記述された.htpasswdファイルになります。

アップロードと確認

ここまで作成した「.htaccess」と「.htpasswd」の2つのファイルを、Basic認証をかけたいディレクトリにアップロードしましょう。

サイト(ディレクトリ)にアクセスしてみましょう。Basic認証のアラートが表示さるはずです!
任意で決めた「ID」と「暗号化していないPassword」を入力してサイトに入れるか確認しましょう。

まとめ

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

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

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

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

合わせて読みたい!