Webサイトにアクセス制限をかけるために、Basic認証を取り入れる方法を見ていきます。Basic認証について基本的な知識を整理しながら、.htaccess
と.htpasswd
の作成方法を確認します。
コンテンツ
Basic認証の基本
Basic認証
とは、Webページにアクセス制限をかけることができる認証方法の一つです。設定を記述した.htaccess
を設置したディレクトリがBasic認証の範囲となります。
アクセス制御はブラウザを閉じるまで有効です。
Basic認証で制限されているディレクトリには検索エンジンのクローラーもアクセスできないため、会員サイトや個人情報を取り扱うWebサイトに適しています。
サーバーを横断した設定はできません。
Basic認証はBase64
Basic認証はBase64
という文字コードを用いて通信を行います。Base64
とは、簡易的な通信を行う際の文字コードのことで、アルファベット・数字・特定の記号のみの64種類の文字が利用可能です。
ただし、素のアルファベット・数字・記号の状態で通信されてしまい、非SSLサイトの場合、外部からログイン情報を覗き見られてしまう恐れがあります。
Base64の64文字とは
- アルファベットの大文字(26文字)
- 小文字(26文字)
- 数字(10文字)
- 「+」「/」の2つの記号
Basic認証の設定方法
- ルートディレクトリ
- test
- index.html //アクセス制限をかける
- test
仮に、サーバーに設置したtestフォルダ内にあるindex.html
にアクセス制限をかけていく方法を見てみます。
.htaccessを作成
- ルートディレクトリ
- test
- index.html
- .htaccess //ここに作成
- test
FTPでベーシック認証をかけたいディレクトリにアクセスし、右クリックから新しいファイルの作成
をクリックすると表示されるダイアログに.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__;
次に、フルパスを知りたいディレクトリにアップロードして、ブラウザでhttps://XXXXXX/test/fullpass.php
にアクセスして確認できる。確認後、fullpass.php
は削除して良い。
- ルートディレクトリ
- test
- index.html
- fullpass.php //ここにアップロード
- test
.htaccessをアップロード
完成した.htaccess
をBasic認証をかけたいディレクトリにアップロードする。
- ルートディレクトリ
- test
- index.html
- .htaccess //ここにアップロード
- test
.htpasswdを作成
.htaccess
の3行目で記述したパスのディレクトリへ移動し、.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 |