Basic認証とは?ベーシック認証の特徴と設定する際に注意すべきことを解説
WEBコンテンツへのアクセスを制限する方法としてBasic認証(ベーシック認証)を設置する方法があります。WEBサーバー上に配置されているWEBコンテンツのディレクトリ内に、指定のテキストを入力したデータを配置するだけで簡単に設定可能です。
サイトをリニューアルする時などWEBコンテンツにIDとパスワードの制限をかけて閲覧できる人を制限する際によく使われます。サイトにBasic認証をかけるとロボットのクロールも制限するので、SEO対策を行いSEOでの上位表示をしたいサイトはBasic認証の実装をサイト全体にしてはいけません。
Basic認証とは
Basic(ベーシック)認証とはWEBコンテンツに制限をかける方法の一つです。ユーザー名とパスワードが正しく入力されないと訪問できないWEBコンテンツを作成するために利用されます。例えば、自社サイトの社員用のWEBページへアクセスする際に以下のような画面からログインすることがあります。
社員以外の方が閲覧しても意味のないWEBページなどに設定することにより、社員がインターネットを介してどこでも、情報を閲覧できるようにします。
HTTPの認証機能をもつシステムで、手軽に制限をかける認証方法であるため、多くのWEBサーバー上やWEBクライアントが対応しています。しかし、ユーザー名やパスワードが暗号化されていないため、通信時に第三者から除き見られる危険性があります。入力データを一定の計算手順で逆変換できない状態で通信するDigest(ダイジェスト)認証などの認証方式を用いたり、HTTPをSSL/TLSにより暗号化したHTTPS通信が広く普及していたり、他の通信方法と併用して利用されることが多いです。
Basic認証の特徴
簡単なアクセス制限であり、以下の特徴があります。
- ディレクトリ単位で制限可能
- ブラウザを閉じるまで有効
- 認証情報を記憶
ディレクトリ単位で制限可能
制限をかけられる領域はディレクトリ単位です。そのため、設定したディレクトリ内のURLはどの領域もユーザー名やパスワードを求めるダイアログが表示されます。ディレクトリ内であれば、WEBページだけでなく、画像やPDFデータなども対象領域内です。簡単に一括で特定の領域に制限をかけられます。サイト全体にベーシック認証をかけたい場合は、ルートディレクトリに「.htaccess」ファイルを設置します。ルートディレクトリとはコンテンツデータファイルがある一番上の階層の事です。
ブラウザを閉じるまで有効
正しいユーザー名とパスワードで認証成功した場合、ブラウザを閉じるまで再認証しなくても閲覧可能です。例えば、認証が設定されたWEBコンテンツで認証成功し、他のWEBコンテンツへ移動したとします。認証設定されたWEBコンテンツへ移行しても、再度認証成功させる必要なく、一度認証成功したWEBコンテンツはブラウザを閉じるまで認証を省略して閲覧できます。
認証情報を記憶
WEBコンテンツの閲覧で認証成功した場合、認証成功状態を保持できます。しかし、利用するブラウザに依存する特徴があるため、ブラウザの種類やバージョン、ネットワークの状態によっては、認証状態がリセットされます。また、スマートフォンでは認証状態を保持できないことが多いです。
Basic認証が可能なサーバ
設定をするためには条件があり、条件を満たさないと設定できませんが、ほとんどのWEBサーバーで設置できます。社内サーバー上などで、自由に設定可能であれば問題ありませんが、無料のレンタルサーバーなどでは作成できないこともあります。設定する際、htaccessデータやhtpasswdデータを作成する必要があるため、データが作成できないWEBサーバー上では設定できません。
WebサーバーとしてApacheではなくnginxを利用している場合、Basic認証が利用できない場合があります。.haccessを利用したBASIC認証の場合は、WebサーバーがApacheである必要があります。nginxの場合には、.htaccessではなく他の方法でBASIC認証をする必要があります。
Basic認証の注意点
簡易的であるがゆえに、注意すべき点がいくつかあります。
- セキュリティの心配
- クローラーによるアクセスも制限
- 複数サーバーに同時設定ができない
- スマートフォンは認証状態を保持できない
それぞれの内容について詳しく解説します。
セキュリティの心配
セキュリティ面において安全な認証設定ではなく、ユーザー名やパスワードを簡単なコードで通信します。Base64という64種類の文字コードを用いて、認証情報を付与した状態で通信をおこなうため、通信途中で第三者からのWEBコンテンツの情報閲覧があった場合は簡単に認証情報の漏洩につながります。
簡易的な認証機能であることを理解し、HTTPSによる暗号化されたWEBコンテンツで設定する必要があります。
クローラーによるアクセスも制限
設定された領域内は、Googleなどの検索エンジンのクローラーによるアクセスも制限します。そのため、GoogleやYahoo!などの検索エンジンから認識されず、設定された領域内は検索結果として表示されません。SEOで上位表示させたいWEBコンテンツで設定すると、検索結果として表示されないため、注意する必要があります。
また、多くのSNSやプラットフォームでもクローラーを利用しているため、多くのサービスで表示されない状況が発生します。
複数サーバーに同時設定ができない
.htaccessデータやhtpasswdデータが設置されたディレクトリ内のみ対象であるため、複数サーバ間の設定はできません。例えば、WEBコンテンツの閲覧による負荷分散や情報漏洩対策のためにサーバーを分けている場合は、設置しているWEBコンテンツのディレクトリ範囲で設定しないといけません。
スマートフォンは認証情報を保存できない
Basic認証は認証状態を保持する特徴がありますが、スマートフォンの場合は保持されません。そのため、ユーザーがスマートフォンで認証を成功させた場合、WEBコンテンツを訪問するたびに認証を成功させる必要があります。
WEBコンテンツを利用するユーザーの多くがスマートフォンからの利用である場合、ユーザービリティに悪い影響を与える可能性があります。
Basic認証の具体的な活用方法
簡易的な認証機能であるため、セキュリティとしての役割は不十分です。利用する場合は、活用シーンを選ぶことが重要であるため、以下の用途で利用されることが多いです。
- 公開直前の確認用のWEBコンテンツ
- 社内のメンバーのみ共有する場合
- 簡易的な会員サイト
公開直前の確認用のWEBコンテンツ
公開前のWEBコンテンツを関係者と最終確認する場合などの一時的に利用することも可能です。設置方法が簡単であるため、タイムリーなタイミングで設置し、必要がなくなれば簡単にBasic認証の設置を外せます。
公開用のサーバー上にWEBコンテンツをアップロードし、インターネット上で関係者のみで動作確認できます。サイトリニューアルや新しくサイト構築するときにサイト全体にBasic認証をかけたり、特定の下層ページだけBasic認証をかけたりできるので有用です。
社内のメンバーのみ共有する場合
社内のメンバーで情報を共有するために活用するWEBページに、Basic認証を設置することにより、インターネットを介してアクセスできます。ローカルエリアで情報を共有するコンテンツを設けることもできますが、社外の端末からアクセスし、情報を共有したいときなどの設置が便利です。
簡易的な会員サイト
実験的な会員サイトなどのコンテンツを公開するときに、Basic認証の設置は有効です。本格的な会員サイトを公開する前に、運用時のシミュレーションや会員の予期せぬ動向を把握するために利用すると良いです。
会員サイトを本格始動する際、登録したユーザー名やパスコードをそのまま利用することも可能です。
Basic認証においてHTTPをHTTPSにする
セキュリティの脆弱性をフォローするために、HTTPSで暗号化されたWEBコンテンツと併用する方法があります。HTTPSはSSLという通信データを暗号化する方法で、認証情報を第三者に覗かれて漏洩する危険性を少なくするシステムです。
前述しているとおり、認証画面で入力されたユーザー名やパスワードを64種類の文字コードで通信をおこなうため、解読されやすい簡易的な通信です。SSL対応のHTTPSを利用することにより通信データを暗号化するので、解読されやすい簡易的な通信でおこないません。
設定をおこなう場合、前述した活用方法であるか、HTTPSで暗号化されたWEBコンテンツ内で利用する必要があります。
Basic認証の設定方法
用途やセキュリティ面に配慮して設定することを理解したうえで設定をしてください。設定方法はhtaccessデータとhtpasswdデータを作成することにより簡単に設置できます。
- メモ帳でテキストデータを作成
- 必要事項を記入する
- アップロード
1.メモ帳でテキストデータを作成
設定をおこなうディレクトリ直下に、メモ帳などのテキストデータを2つ作成します。
2.必要事項を記入
.htaccessデータと.htpasswdデータに必要事項を入力します。
.htaccessデータには以下の内容を記入します。
AuthType Basic
AuthName “[認証名]”
AuthUserFile “.htpasswdファイルの場所”
require valid-user
- 1行目:AuthTypeで認証方式を指定するため、Basicと記入します。Digest認証を設定する場合はDigestと記入します。
- 2行目:AuthNameはお好きな名称を半角英数字で指定してください。ログイン時のユーザー名とは異なるため、わかりやすい認証名をつけて問題ありません。3行目:AuthUserFile は.htpasswdが保存されているパスを記入します。例えば、/example.com/httpdocs/test/.htpasswdなどのように/(スラッシュ)を用いて保存場所を指定してください。
- 4行目: require valid-userと記入し、WEBコンテンツへ訪問するすべての人に認証を求める指定をします。スペルミスが多いため、確実に記入をします。
.htpasswdデータへ必要事項を入力
作成したデータには以下の内容を記入します。
認証を成功させるユーザー名とパスコードを記入します。パスコードを直接記入した状態では、セキュリティ面で問題があるため、お好きなパスコードを暗号化したコードを記入します。パスコードの暗号化はLUFTTOOLSなどのツールより生成できます。また、パスコードの文字数は32文字まで有効です。
ユーザー名と暗号化されたパスコードを半角コロンで区切って記入します。認証成功させるユーザー名とパスコードの組み合わせを複数個記入できるため、利用する社員数などに応じて、ユーザー名とパスコードを設定してください。
3.アップロード・確認
作成したデータがユーザー名やパスコードを設定するディレクトリ直下に配置されていることを確認し、WEBコンテンツを更新すれば設定完了です。実際にWEBページの訪問時に認証を確認するポップアップが出現し、設定したユーザー名とパスコードでログインができれば設定完了です。
Basic認証を設定後にエラーとなる原因
手順通り設定してもエラーが発生したり、動作しなかったりする場合、以下のことを確認する必要があります。エラー内容を全て解消しなければ、正常に動作しません。
- 作成したデータの記述ミス
- 作成したデータのパス指定のミス
- 半角英数字以外の文字を利用
- .htpasswdで指定したパスコードの暗号化確認
作成したデータの記述ミス
エラーの原因として多い例が.htaccessデータと.htpasswdデータの記述ミスです。大文字小文字が混合しているため、テキストデータを一行一行確認し、記入した内容のスペルや記号の有無などを確認してください。
AuthType Basic
AuthName “[認証名]”
AuthUserFile “.htpasswdファイルの場所”
require valid-user
作成したデータのパス指定のミス
.htaccessデータで指定した.htpasswdのパス指定が正しいか確認してください。プログラミングなどでもよくあるミスで、パスを正しく記入指定されていないと、エラーもしくは動作しません。ディレクトリ内のファイル構造を確認して、パスを記入してください。また、URLとは違うため、注意をしてください。下記では、ファイルの場所をsample.comのルートディレクトリ部分にしました。
AuthType Basic
AuthName “[認証名]”
AuthUserFile “/var/www/sample.com/.htpasswd”
require valid-user
半角英数字以外の文字を利用
作成したデータに指定のテキストを記入する際、基本的には半角英数字を使います。また、特殊な記号を使うとエラーが発生します。エラーが発生した場合、半角英数字の利用と特殊な記号を使っていないか確認してください。パソコンの設定によっては無意識のうちに半角記入できていないこともあります。
.htpasswdで指定したパスコードの暗号化確認
上記3つの内容で解決しない場合、.htpasswdで指定したパスコードが暗号化されていないことにより、認証できないことがあります。再度ツールを使ったパスコードの暗号化をおこなって設定し直してください。
WordPressでBasic認証を実装する方法
wordpressで構築したサイトでBasic認証をかけたい場合も.htaccessファイルと.htpasswdファイルを使えばできます。BASIC認証をかけたいWordPressサイトの「wp-admin」と同じ階層に.htaccessを置いて編集します。
AuthUserfile /ルートディレクトリからのフルパス/.htpasswd
AuthGroupfile /dev/null
AuthName “Please enter your ID and password”
AuthType Basic
require valid-user
WordPressでBasic認証をかける場合、プラグインでも可能です。HTTP Authのプラグインで実装できます。
WordPressでプラグインをダウンロードして有効化すればBasic認証が使えます。
まとめ
Basic認証はWEBサーバー上で設定できる簡易的な認証機能です。ディレクトリ範囲で制限をするため、活用方法によってはとても便利に運用できます。しかし、セキュリティ面では十分とはいえない認証機能です。個人情報や機密事項などを含んでいないWEBコンテンツで設定するか、HTTPSで暗号化されたWEBコンテンツで利用するなど、用途を考える必要があります。
設定方法はとても簡単なので、WEBコンテンツのリニューアル時や特定ぺージの修正や構築時に積極的に使うと良いです。