Webサイトにアクセス制限をかけるために、Basic認証を取り入れる。Basic認証について基本的な知識を整理しながら、.htaccess
と.htpasswd
の作成方法を見ていく。
Basic認証の基本
Basic認証
とは、Webページにアクセス制限をかけることができる認証方法の一つ。
設定を記述した.htaccess
を設置したディレクトリがBasic認証の範囲となる。
有効期限はブラウザを閉じるまで。
Basic認証で制限されているディレクトリにはクローラーもアクセスできない。
また、サーバーを横断した設定はできない。
Basic認証はBase64
Basic認証はBase64
という文字コードを用いて通信を行う。Base64
は、簡易的な通信を行う際の文字コードで、アルファベット・数字・特定の記号のみの64種類の文字が利用可能。そのままアルファベット・数字・記号の状態で通信されてしまい、非SSLサイトの場合、外部からログイン情報を覗き見られてしまう。
アルファベットの大文字(26文字)
小文字(26文字)
数字(10文字)
「+」「/」の2つの記号
Basic認証の設定方法
サーバーに設置したtestフォルダ内にあるindex.html
にアクセス制限をかけていく。
- ルートディレクトリ
- test
- index.html //アクセス制限をかける
- test
.htaccessを作成
FTPでベーシック認証をかけたいディレクトリにアクセスし、右クリックから新しいファイルの作成
をクリックする。
- ルートディレクトリ
- test
- index.html
- .htaccess //ここに作成
- test
ダイアログに.htaccess
と入力してOKする。

.htaccess
はプレーンなテキストのためテキストエディタで編集できる。
文字コードは重要でWindows標準のメモ帳ならばANSI
、テキストエディタならばUTF-8(BOMなし)
で保存する。
.htaccessの記述
.htaccessを一度ローカルにダウンロードして、設定内容を記述する。
AuthType Basic
AuthName "[認証名]"
AuthUserFile ".htpasswdファイルの場所"
require valid-user
それぞれの記述内容の意味は以下のとおり。
- AuthType Basic
- 認証方式の設定。
- 認証方式は
Basic
とDigest
があり、ベーシック認証ではBasic
と記述する
- AuthName " [認証名] "
- この認証の名前を任意で設定する
- 好きな名称で良いが、半角英数字が良い。必ずダブルクォーテーション
""
で囲むこと
- AuthUserFile "[.htpasswdファイルの場所]"
.htpasswd
の設置場所- サーバー内のフルパスをスラッシュ
/
始まりで記述 - 必ずダブルクォーテーション
""
で囲むこと
- require valid-user
- 全ユーザーに認証を求めるようにするという意味
3行目のサーバのフルパスを確認する方法は、テキストエディタで任意のphpファイル(fullpass.php
など)を作成し、下記のように記述する。
echo __FILE__;
フルパスを知りたいディレクトリにアップロードして、
- ルートディレクトリ
- test
- index.html
- fullpass.php //ここにアップロード
- test
ブラウザでhttps://XXXXXX/test/fullpass.php
にアクセスして確認するとわかる。確認後、fullpass.php
は削除して良い。
.htaccessをアップロード
完成した.htaccess
をBasic認証をかけたいディレクトリにアップロードする。
- ルートディレクトリ
- test
- index.html
- .htaccess //ここにアップロード
- test
.htpasswdを作成
.htaccess
の3行目で記述したパスのディレクトリへ移動し、.htpasswd
を新規作成する。
.htpasswdの記述
.htpasswd
をローカルにダウンロードして、ログイン時に入力するユーザー名
とパスワード
を記述する。
[ユーザー名1]: [暗号化されたパスワード1]
[ユーザー名2]: [暗号化されたパスワード2]
入力時のルール
- ユーザー名と暗号化されたパスワードを、半角コロン(:)記号で区切って記述する
- 1行に1組ずつ、アカウントを作成したい数だけ改行する
- 暗号化がされていないバスワードを記述してもベーシック認証は動作しない仕組みになっている
パスワードの暗号化
今回は、LUFTTOOLSのパスワード暗号化ツールを使用する。IDをtestuser
、パスワードをninsyoutest
と入力し、生成ボタン
をクリックする。
すると、.htpasswd
に記述するテキストが暗号化されたパスワードとともに生成される。そのまま.htpasswd
に転記する。
testuser:W5VZAMcxgh5.E
.htpasswdをアップロード
完成した.htpasswd
を、.htaccess
で指定した場所に保存して完了。
アクセス制限を確認する
https://XXXXXX/test/index.html
へブラウザからアクセスすると、認証ダイアログが立ち上がる。

ここで.htpasswd
に記述したユーザー名
とパスワード
を入力する。ただし、パスワードは暗号化する前のパスワードを入力しなければ、認証を通ることができない。
ユーザー名 | testuser |
---|---|
パスワード | ninsyoutest |
Related Tags