Basic認証の設定方法~.htaccessと.htpasswdを作成する~

Webサイトにアクセス制限をかけるために、Basic認証を取り入れる。Basic認証について基本的な知識を整理しながら、.htaccessと.htpasswdの作成方法を見ていく。

Basic認証の基本

Basic認証とは、Webページにアクセス制限をかけることができる認証方法の一つ。

設定を記述した.htaccessを設置したディレクトリがBasic認証の範囲となる。

有効期限はブラウザを閉じるまで。

Basic認証で制限されているディレクトリにはクローラーもアクセスできない。

また、サーバーを横断した設定はできない。

Basic認証はBase64

Basic認証はBase64という文字コードを用いて通信を行う。Base64は、簡易的な通信を行う際の文字コードで、アルファベット・数字・特定の記号のみの64種類の文字が利用可能。そのままアルファベット・数字・記号の状態で通信されてしまい、非SSLサイトの場合、外部からログイン情報を覗き見られてしまう。

Base64の64文字

アルファベットの大文字(26文字)
小文字(26文字)
数字(10文字)
「+」「/」の2つの記号

Basic認証の設定方法

サーバーに設置したtestフォルダ内にあるindex.htmlにアクセス制限をかけていく。

  • ルートディレクトリ
    • test
      • index.html //アクセス制限をかける

.htaccessを作成

FTPでベーシック認証をかけたいディレクトリにアクセスし、右クリックから新しいファイルの作成をクリックする。

  • ルートディレクトリ
    • test
      • index.html
      • .htaccess //ここに作成

ダイアログに.htaccessと入力してOKする。

メモ

.htaccessはプレーンなテキストのためテキストエディタで編集できる。
文字コードは重要でWindows標準のメモ帳ならばANSI、テキストエディタならばUTF-8(BOMなし)で保存する。

.htaccessの記述

.htaccessを一度ローカルにダウンロードして、設定内容を記述する。


AuthType Basic
AuthName "[認証名]"
AuthUserFile ".htpasswdファイルの場所"
require valid-user

それぞれの記述内容の意味は以下のとおり。

AuthType Basic
認証方式の設定。
認証方式はBasicDigestがあり、ベーシック認証ではBasicと記述する
AuthName " [認証名] "
この認証の名前を任意で設定する
好きな名称で良いが、半角英数字が良い。必ずダブルクォーテーション""で囲むこと
AuthUserFile "[.htpasswdファイルの場所]"
.htpasswdの設置場所
サーバー内のフルパスをスラッシュ/始まりで記述
必ずダブルクォーテーション""で囲むこと
require valid-user
全ユーザーに認証を求めるようにするという意味

3行目のサーバのフルパスを確認する方法は、テキストエディタで任意のphpファイル(fullpass.phpなど)を作成し、下記のように記述する。


echo __FILE__;

フルパスを知りたいディレクトリにアップロードして、

  • ルートディレクトリ
    • test
      • index.html
      • fullpass.php //ここにアップロード

ブラウザでhttps://XXXXXX/test/fullpass.phpにアクセスして確認するとわかる。確認後、fullpass.phpは削除して良い。

.htaccessをアップロード

完成した.htaccessをBasic認証をかけたいディレクトリにアップロードする。

  • ルートディレクトリ
    • test
      • index.html
      • .htaccess //ここにアップロード

.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