セキュリティ

ベーシック認証(Basic認証)とは?設定方法と注意点・エラーになる原因を解説

Webサイトにアクセス制限をかける方法はありますが、最も簡易的に制限をかけることができる方法として挙げられるのはベーシック認証(Basic認証)です。ベーシック認証(Basic認証)はWebサーバーに付随している機能の1つでファイルに数行の記述をするだけで簡単にアクセス制限をかけることが可能です。その簡易さゆえに、設定するときには、いくつか注意すべきポイントがあります。

今回はベーシック認証(Basic認証)の基本から設定方法、設定時の注意点をご紹介します。

ベーシック認証(Basic認証)

目次

ベーシック認証(Basic認証)とは

ベーシック認証(Basic認証)とはWebサイトの特定の領域、つまりページやファイルにアクセス制限をかけることができる認証方法の1つです。ベーシック認証をかけると、認証をかけたWebサイトにアクセスしようとしたとき、下の画像のような認証ダイアログが立ち上がって、ユーザー名(ID)とパスワードの入力が求められます。

ベーシック認証(Basic認証)ダイアログ ベーシック認証(Basic認証)の認証ダイアログ

IP制限とベーシック認証(Basic認証)を併用する

ユーザー名(ID)とパスワードを知らないとそのページを閲覧できず、間違って入力した場合はダイアログが再度表示されたり、「401 Authorization Required」や「アクセスしようとしたページは表示できませんでした。」というエラーメッセージが表示されます。

basic_2_918x656

例えば、簡易的な会員制サイトやあるファイルを特定のメンバーとだけ共有したい際に活用されることがしばしばあります。また、Web制作会社の場合、クライアントの公開前のWebサイトなど、関係者のみが制作中のWebサイトを閲覧できるようにベーシック認証をかけることがあります。

ベーシック認証(Basic認証)が可能なサーバー

ベーシック認証はWebサーバーの基本的な機能として、ほとんどのWebサーバーで設定することが可能です。ただし、レンタルサーバーをご利用の場合は注意が必要で、特に無料サービスの場合では、ベーシック認証を設定する「.htaccess」ファイル(後ほど説明します)を利用することができない可能性があります。ご利用されているレンタルサーバーで「.htaccess」ファイルを編集することができるかどうかは、サーバー管理会社へお問い合わせください。

ベーシック認証(Basic認証)の特徴

では、ベーシック認証にはどのような特徴があるのでしょうか。ベーシック認証は簡易的なアクセス制限ではありますが、いくつか便利な特徴も兼ね備えているので、今回は3つピックアップして紹介していきます。

ベーシック認証(Basic認証)の特徴

1. ディレクトリ単位でのアクセス制限が可能

まず、ベーシック認証が設定できる範囲は、基本的にはディレクトリ単位のみです。正確には、設定の記述を行う「.htaccess」ファイルを設置したディレクトリ全体がベーシック認証の範囲となります。

ですので、ベーシック認証を設定したディレクトリのどのURLにアクセスしようとしても、IDとパスワードを求めるダイアログが表示されるようになります。例えば、ディレクトリ内であればWebページだけにとどまらず、画像やPDFファイルなどもベーシック認証の範囲内となるのです。一括で特定の領域にアクセスをかけるには、非常に便利なアクセス制限方法だと言うことができます。

下の画像では、ルートディレクトリに「.htaccess」ファイルを設置することで、全体にベーシック認証をかけています。

basic_3_617x684

もちろん「.htaccess」ファイル内に細かい設定をすればディレクトリ全体だけではなく、特定のページや画像のみに対してベーシック認証をかけることも可能です。本記事では紹介しませんが、細かい制限設定が必要な場合は試してみてください。

2.認証完了後はブラウザを閉じるまで有効

ベーシック認証は、ユーザーが正しいIDとパスワードで認証に成功した場合、ブラウザを閉じるまでの間は再認証なしで何度でもアクセスすることが可能になります。ブラウザさえ閉じていなければ、仮に、違うWebサイトを閲覧した後でも認証なしで再びアクセスすることが可能です。

3.ブラウザがログイン情報を記憶

一度ベーシック認証で認証に成功してしまえば、ユーザー名とパスワードはブラウザに記憶され、再び入力する手間を省くことができます。ただし、あくまでブラウザに依存する機能なので、ブラウザの種類やバージョン、ネットワークの状態によってはログイン情報が保存されない可能性があります。また、スマホではベーシック認証のログイン情報が保持されないことがほとんどですので、利用する際のブラウザやデバイスには注意が必要です。

ベーシック認証(Basic認証)のログイン情報が保持される

ベーシック認証(Basic認証)の注意点

ここまでベーシック認証の便利な特徴をご紹介しました。しかし、ベーシック認証はその簡易さから注意するべき点が多く存在します。では、ベーシック認証を使用する上での注意点を見ていきましょう。

セキュリティの脆弱性

まずはセキュリティ面ですが、ベーシック認証はセキュアな認証とは言い切れません。その1つの理由としてベーシック認証の通信方法が挙げられます。

ベーシック認証ではログイン情報を入力して送信する際に「Base64」という文字コードを用いて通信を行います。「Base64」は簡易的な通信を行う際の文字コードで、アルファベット・数字・特定の記号のみの64種類の文字が利用可能です。つまり、ベーシック認証で入力したログイン情報は、「Base64」の文字コードで表現できるアルファベット・数字・記号で通信されてしまいます。もし、ベーシック認証をかけたWebページが「https」ではなく、SSL対応がされていない「http」通信である場合合、外部からログイン情報が盗聴されやすくなっているため注意が必要です。

クローラーもアクセスできない

ベーシック認証を設定してしまうと、その領域には検索エンジンなどのクローラーもアクセスすることができなくなります。クローラーとは、インターネット上に存在するWebサイトや画像などのあらゆる情報を取得し、自動的に検索データベースを作成する巡回プログラムのことです。クローラーが来ないということはつまり、GoogleやYahoo!などで検索してもベーシック認証を設定した領域は検索結果に表示されなくなるということです。

さらに検索エンジンだけでなくTwitterやFacebookなどのSNSもクローラーを使用しています。このように、ベーシック認証を設定すると多くのサービスで表示されなくなってしまうということに注意しましょう。

サーバーをまたいだ設定ができない

先述したように、ベーシック認証を設定できる範囲は「.htaccess」ファイルのを設置したディレクトリのみが対象です。ディレクトリを超えた範囲、例えばサーバーをまたいで同じベーシック認証を設定することはできません。あくまで、「.htaccess」ファイルを設置したサーバーのディレクトリが範囲であることを覚えておいてください。

スマートフォンではログイン情報を保存できない

ベーシック認証の「ログイン情報を保持できる」の特徴ですでにご紹介しましたが、ほとんどのスマートフォンではIDとパスワードを保存することができません。ユーザーがスマホを利用してログインをしたい場合、毎回IDとパスワードを手入力しなければならないため、ユーザーに手間がかかってしまうことがあります。

ベーシック認証(Basic認証)の設定方法

ではここから実際にベーシック認証の設定方法を解説していきます。設定方法は非常に簡単で、サーバーに「.htaccess」ファイルと「.htpasswd」ファイルを作成し、それぞれに特定の記述を行うだけで完了です。ではファイルごとに作成方法を見ていきましょう。

1.「.htaccess」ファイルを作成

まずは、「.htaccess」ファイルを作成していきましょう。「.htaccess」ファイルはWebサーバーの設定を記述するファイルです。「.」(ドット)で始まる見慣れないファイルですが、記述内容はいたってシンプルです。

1-1 メモ帳を使って新規ファイルを作成

それでは、ベーシック認証をかけたいディレクトリに移動してください。ディレクトリに入ることができたら、新規ファイルを作成し、ファイル名を「.htaccess」としましょう。

basic_5_614x679

今回「.htaccess」ファイルはWindowsやMacに標準で用意されている「メモ帳」で編集をしていきます。「.htaccess」ファイルはプレーンなテキストですので、一般的なテキストエディタで編集することが可能です。ただし、文字コードは、「UTF-8」にしてしまうと動作しなくなってしまう可能性がありますので、「ANSI」のままにしておいてください。

1-2 記述するのは4行のみ!

「.htaccess」ファイルが作成できたら、さっそく記述をしていきましょう。記述するのはたったの4行です。

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

ではそれぞれの行の意味を解説していきます。

AuthType Basic

まず1行目ですが、 認証方式を設定します。認証方式は「Basic」か「Digest」がありますが、ベーシック認証は「Basic」と記述してください。

AuthName " [認証名] "

2行目ではこの認証の名前を任意で設定します。好きな名称を設定して問題ありませんが、日本語を使用すると文字化けする可能性がありますので、半角英数字での設定をおすすめします。「" "」(ダブルクオテーションマーク)で囲む必要があるので注意しましょう。

AuthUserFile "[.htpasswdファイルの場所]"

3行目には次のステップで作成するユーザー名とパスワードを記したファイル「.htpasswd」ファイルを設置する場所を記述します。「/」(スラッシュ)記号で始まる場所をフルパス(URLではなく、サーバー内でのフルパス)で記述してください。

「.htpasswd」ファイルの設置場所は「.htaccess」ファイルと同じディレクトリでも構いませんし、別の場所でも問題ありません。こちらも2行目と同様に「" "」(ダブルクオテーションマーク) で囲むこむ必要があります。

require valid-user

4行目は全ユーザーに認証を求めるようにするという意味です。この通りに記述してください。

実際に入力してみると下の画像のようになります。

ベーシック認証(Basic認証)の記述

1-3 ファイルをアップロード!

記述が完了したら、ベーシック認証をかけたいディレクトリ内でファイルを保存・アップロードすれば完了です。

2.「.htpasswd」ファイルを作成

次に、「.htpasswd」ファイルを作成していきます。「.htpasswd」ファイルはベーシック認証のログイン情報(IDとパスワード)を格納するファイルです。

2-1 メモ帳を使って新規ファイルを作成

ではさっそく「.htpasswd」ファイルを作成していきましょう。まずは、先ほどの「.htaccess」ファイルの3行目で記述したパスのディレクトリへ移動し、「.htpasswd」というファイル名のファイルを作成します。「.htpasswd」ファイルは1-1 メモ帳を使って新規ファイルを作成のステップと同じようにテキストエディタで作成することができます。今回も本記事ではメモ帳で作成していきます。

2-2 ユーザ名とパスワードを1行ずつ記述

「.htpasswd」ファイルが作成できたら、ログイン情報の記述を行っていきます。記述方法はいたってシンプルで下記のように記述をしていきます。

  1. [ユーザー名1]: [暗号化されたパスワード1]
  2. [ユーザー名2]: [暗号化されたパスワード2]

ユーザー名と暗号化されたパスワードを、半角コロン(:)記号で区切って記述します。1行に1組ずつ、アカウントを作成したい数だけ改行しながら作成していきます。上記の例では2つのログイン情報を設定していますが、1つであれば1行だけで問題ありません。

パスワードに関して「暗号化された」という言葉が入っていますが、パスワードはテキストエディタに直接入力したものではなく、暗号化されたものでなければいけません。暗号化がされていないバスワードを記述してもベーシック認証は動作しない仕組みになっており、ある程度のセキュリティが担保されています。暗号化の方法は次のステップで紹介します。

2-3 パスワードを暗号化

では、パスワードを暗号化していきましょう。ベーシック認証用のパスワード生成ツールを無償提供しているサイトは多数あるので、「htパスワード 生成」などのキーワードで検索して、自分が使いやすいものを利用するとよいでしょう。

今回はLUFTTOOLSの「パスワード暗号化ツール」を使用していきます。

lufttools1_1041x562

「パスワード暗号化ツール」を開いたら、まずは、ログイン情報となるIDとPasswordを入力しましょう。入力が完了したら「生成」ボタンをクリックしてみてください。「.htpasswd」ファイルに記述するテキストが暗号化されたパスワードとともに生成されます。

例えば、IDを「SampleUser」、パスワードを「webmedia」とした場合、記述してみると

  1. SampleUser:OyM..ShPhqRvo

となりました。

lufttools2_841x603

ここで生成したテキストをそのまま「.htpasswd」ファイルに転記して、記述は完了です。「.htpasswd」ファイルは下の画像のようになっています。

ベーシック認証(Basic認証)のパスワードの記述

2-4 ファイルをアップロード!

記述が完了したら、「.htaccess」ファイルで指定した場所にファイルを保存・アップロードして完了です。

エラーになってしまう原因

ここまでで、設定方法について理解いただけましたでしょうか。しかしこの手順で設定していても、エラーが発生して、ベーシック認証がうまく設定できない場合があります。考えられ得るエラーの原因をご紹介していきますので、参考にしながらもう一度確認してみてください。

「.htaccess」ファイルの記述に誤りがある

ベーシック認証の認証ダイアログが表示されない場合、「.htaccess」ファイルのアップロード先が正しいかどうかを確認してください。「.htaccess」ファイルのアップロード先はベーシック認証を設定したディレクトリの中に設置していますか?違ったディレクトリに設置していた場合、ベーシック認証がかからない可能性があります。

同時に「.htaccess」ファイルの3行目に記述したAuthUserFileのパスの場所に「.htpasswd」ファイルがちゃんと設置されているかも確認してみてください。正しくパスが設定されていないと、「500 Internal Server Error」ページが表示され、正しいIDとパスワードを入力しても繰り返し認証を求められてしまいます。

「.htaccess」ファイルに特殊な記号を使用している

正確なログイン情報を入力しているはずなのに「Authorization Required」が表示される場合は、ログイン情報の記号が問題かもしれません。 「Authorization Required」は正しいID・パスワードと認識されなかった時には「Authorization Required」と表示されるエラーです。

何度入力してもこの表示が出てしまう場合、「.htaccess」ファイルのIDやパスワードに特殊な記号を使用していて、文字コードの問題で認識されていないことが原因である可能性があります。「.htaccess」ファイルでの入力は、できるだけ記号の使用を避け、半角の英語と数字で設定してみてください。

パスワードが暗号化されていない

「.htaccess」ファイルの設定手順の中で、「.htaccess」ファイルのパスワードを暗号化する必要がある伝えしましたが、暗号化がされていないと認証されない可能性があります。もう一度パスワードが暗号化されているか確認してみてください。

特定のIPアドレスからのみアクセスできるようにする

ベーシック認証を設定することができたでしょうか。ベーシック認証はこのように簡単に設定することができ、その手軽さゆえ、多くの場面で使用されている認証方法です。しかし、ブラウザメーカーからセキュリティ上あまり推奨されていません。

より厳重に制限をかけたい場合は、特定のIPアドレスからのみアクセスが可能な「IP制限」をベーシック認証と併用して、特定のIPアドレスからのみアクセスが可能な「IP制限」を使用することが多いです。IP制限の設定方法は関連記事にまとめていますので、参考にしてみてください。

まとめ

今回は手軽にアクセス制限をかけることができるベーシック認証(Basic認証)の基本から設定方法まで紹介しました。非常に簡単に設定ができてしまうため、いろいろな場面で使用されるベーシック認証(Basic認証)ですが、十分なセキュリティを担保したアクセス制限ではありません。あくまで簡易的な認証であることを忘れないでください。

この記事の著者

itra
ITRA株式会社

官公庁や大手企業を中心とした大規模なWebサイトを総合的にプロデュースするWeb制作会社。デザインからシステム、サーバーまでWebサイトに関わるお客様の悩みを解決します。

初めて使う人にも使いやすく、セキュリティレベルの高いCMSパッケージ「iCMS」

詳しくはこちら
itra