【Server】Basic認証の設定方法|.htpasswdファイルとは何か?IDとパスワードはどこで設定するか(.htaccess)

server-cloud-kv-prograshi(プロぐらし)-kv Server
記事内に広告が含まれていることがあります。

WEBサイト公開前などサイトを公開したくない場合は、Basci認証をかけると確実です。


Basic認証とは何か?

Basic認証(ベーシック認証)とは、WebサイトやAPIなどにアクセスする際に、「ユーザー名」と「パスワード」を使って利用者を認証する仕組みです。

WEBサイトを開こうとすると以下のようなポップアップを表示します。




認証の流れは、

  1. サイトにアクセスしようとすると、ポップアップでログイン画面が表示されます。
  2. ユーザー名とパスワードを入力すると、それが毎回リクエストの中に送信されます。
  3. サーバー側が正しければアクセスを許可、不正なら拒否します。


とても簡単に導入することができますが、セキュリティ的には弱いです。通信は暗号化されず、セッションやログイン状態の管理はしません

このため、HTTPSで使わないとパスワードが丸見えになり、かつ、セッション毎に都度パスワード入力が必要となります。


.htpasswdとは何か?

.htpasswd(エイチティー・パスワード)とは、Basic認証で使うユーザー名とパスワードを保存するファイルです。

.htpasswdには「ユーザー名」と「暗号化されたパスワード」が書かれていますWebサーバー(主にApache)がこのファイルを使って、正しいログイン情報かどうかを確認します。

ちなみに、Basic認証をかけた際は、.htaccessでユーザーIDとパスワードを記述した場所(ディレクトリ)を指定しますが、その際「.htpasswd」以外のファイル名でも機能します(例: .idpassなど)

.htpasswdという名前は慣例

世界的に使われているWebサーバー「Apache」の htpasswd コマンドを実行すると、デフォルトで 「.htpasswd」という名前のファイルを出力します。このため慣例的に「.htpasswd」というファイル名を使うことが一般的です。

なおファイルの前の「.(ドット)」は隠しファイル(通常のファイル一覧では表示されないように設定されているファイル)です。



Basic認証の設定方法

.htpasswdファイルの作成

まずはユーザーIDとパスワードを記述する「.htpasswd」ファイルを生成します。

セキュリティの観点から、WEBからアクセスできない場所(例:public_htmlの外側)に置くことが推奨されています。

ディレクトリを作ってその中にファイルを作ってもいいですし、ファイルを直下につくっても問題ありません。(後ほどファイルの場所をフルパスで指定します。)


ファイルの中に「ユーザーID」と「パスワード」記述します。※パスワードは暗号化してある必要があります。

以下のサイトなどで無料でパスワードを生成することができます。

> https://www.luft.co.jp/cgi/htpasswd.php


IDとPasswordを入力して生成ボタンをクリックすると、下にテキストが表示されます。


.htpasswdの記述形式

.htpasswdの記述形式は以下のようになっています。

user名1(ID):password1(暗号化)
user名2(ID):password2(暗号化)
user名3(ID):password3(暗号化)
・・・


これをコピーして先ほど作成した .htpasswdに貼り付けます。


保存すれば完了です。


.htaccessの編集

次に、公開ディレクトリの直下にある「.htaccess」を編集します。

ファイルを開いて以下を記述します。記述場所は一番上でも、一番下でもどちらでも構いません。

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /フルパス/.htpasswd
Require valid-user


AuthUserFileには、「.htpasswd」ファイルを置いた場所までのフルパスを記述します。

通常は以下のようになっています。

AuthUserFile "/home/・・・/ドメイン名/.htpasswd"


ファイルを保存すればBasic認証の設定は完了です。



Basic認証の削除

Basic認証を削除するには、「.htaccess」に追記した以下のコードを削除します。

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /フルパス/.htpasswd
Require valid-user


もしくは、コメントアウトします。

#AuthType Basic
#AuthName "Restricted Area"
#AuthUserFile /フルパス/.htpasswd
#Require valid-user
タイトルとURLをコピーしました