こんにちはフロントエンドエンジニアのまさにょんです!
今回は、Apache(Webサーバー)でBasic認証を実装する方法を解説していきます。
目次
Basic認証をかけたいディレクトリのフルパスを調べる
「 .htaccess 」ファイルにBasic認証の設定を記述する際に、サイトのフルパスを記述する必要があります。
なので、まずはBasic認証をかけたいディレクトリのフルパスを調べます。
もしVPSなどのレンタルサーバーで簡単にフルパスを調べられない場合は、次のようなフルパスを調べるために使うPHPファイルを作成します。
<?php
echo __FILE__;
?>
PHPファイルを用意できたら、フルパスの知りたいディレクトリにアップロードします。
例えば「example.com」というドメインのWebサイトのフルパスを調べるとしたら、
exampleファイル直下に「sample.php」をアップロードしてください。
アップロードした後に「 example.com/sample.php 」にアクセスすると、
WebサイトのフルパスがWeb画面に出力されるので、それをコピーして、テキストファイルなどに貼り付けて保持しておきます。
Basic認証用の「ID / Pass」設定ファイル「 .htpasswd 」を作成する
「 .htpasswd 」を作成する
まず「 .htpasswd 」という名前のファイルを「 .htaccess 」と同じ階層に作っておきます。
「ID / Pass」の作成
Basic認証では、IDとパスワードが必要になります。
また、パスワードは暗号化されたものでなければいけません。
暗号化がされていないバスワードを記述してもベーシック認証は動作しない仕組みになっており、
ある程度のセキュリティが担保されています。
今回は、パスワード暗号化ツールを使用して、暗号化されたPasswordを自動生成します。
上記のツールを利用すると、IDと暗号化されたPasswordを自動生成してくれます。
あとは、これを先ほど作成した「 .htpasswd 」ファイルに貼り付けます。
htpasswdコマンドを使って「.htpasswd」ファイルを作成する
htpasswdコマンドを使って「.htpasswd」を自動生成する方法もあります。
最初にファイルを作成するときは -c オプションを付けて実行する。
htpasswd -c <パスワードファイル名> <ユーザ名>
ユーザを追加する場合はオプションなしで実行する。
htpasswd <パスワードファイル名> <ユーザ名>
ユーザを削除する場合は -D オプションを付けて実行する。
htpasswd -D <パスワードファイル名> <ユーザ名>
引用元: .htaccessでBASIC認証
「 .htaccess 」にBasic認証の設定を記述する
「 .htaccess 」ファイルには、Basic認証の設定に関する記述をしていきます。
# AuthUserFile に指定するのは、「 .htpasswd 」までのフルパス
AuthUserFile C:¥httpd-2.4.54-win64-VS16¥Apache¥RobotamaWebApp¥.htpasswd
AuthGroupFile /dev/null
AuthName "Input ID and Password"
AuthType Basic
Require valid-user
AuthUserFile は認証で使うユーザ名とパスワードを記述したファイル(パスワードファイル)までのフルパスを指定します。
今回の場合は「 .htpasswd 」までのフルパスになります。
AuthGroupFile は認証で使うグループを記述したファイルを指定します。
使わない場合は /dev/null とすればいいです。
AuthName はダイアログに表示される文字列(半角英数推奨)を指定します。
ブラウザによっては表示されません。
AuthType は認証方法を指定します。
Basic認証を使うので「Basic」と記述します。
Require この制限でアクセスを許可するユーザやグループを指定します。
「valid-user」はIDとPasswordを知っている、すべてのユーザーにアクセスを許可する設定です。
「 .htaccess 」ファイルの設定は、上記で完了です。
「.htpasswd」ファイルには、IDと暗号化されたPasswordが「 ID: 暗号化されたPassword 」の形で記述されています。
この「ID / Password」をBasic認証を通す人達に共有すれば、Basic認証によって特定の人だけが閲覧できるようになります。
Robotama:hBBu7iivf9m3A
Twitterやってます!Follow Me!
神聖グンマー帝国の逆襲🔥
神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!