Basic認証(ベーシック認証)って何?設定から注意点までわかりやすく解説

「クライアントさんにBasic認証を設定してほしいと言われたけどどうしたらいいかわからない。」
「簡単にサイトに制限をかけたいけどどうしたらいいんだろう?」
「Basic認証が気になっているけど、セキュリティとか注意しないといけない事ってないの?注意事項を知りたい。」

このようにサイトにかける制限や、Basic認証についてお悩みではありませんか?
今回の記事では、Basic認証について解説します。

Basic認証とは何なのか、Basic認証の実際の使い方や注意点まで網羅していますので、Basic認証やサイトへの制限についてお悩みの方は是非参考にされてください。

目次

Basic認証とは?簡単に制限がかけられるって本当?

Basic認証とは上記の画像のように簡易的にアクセス制限をかけたり、簡単な会員サイトを作る時にも利用されている認証方法です。

例えばサイト公開前にクライアントさんと制作側のみがアクセスできるようにしたり、何かしらの条件をクリアした人のみ表示できるページを作りたいといった時に便利な機能なんですね。

サーバー付属の機能でも設定できますが、自分でファイルを作成しFTPソフトなどで追加しての設定もできます
より簡単な方法はサーバー付属の機能を利用する方法ですが、ここは特にどちらが良い!というものはないので好みの方法を選択しましょう。

Basic認証の注意点

Basic認証の手順に入る前に、Basic認証の注意点についても知っておきましょう。
特にセキュリティ面を考えている方ほど、こちらは押さえておいてください。
Basic認証の注意点は以下になります。

  1. 無料のサーバーによってはBasic認証の機能がない
  2. セキュリティ面がやや心配
  3. クローラーがアクセスできないので検索に載らなくなる
  4. Basic認証の範囲は設定されたディレクトリ内のみ

分けて解説します。

Basic認証の注意点1.無料のサーバーによってはBasic認証の機能がない

Basic認証は、大体のサーバーに機能として備わっています

そのためあえてファイルを作りFTPソフトなどを利用してサーバーに上げるといった手間もなく、手軽にできる利点があるわけですが、無料のサーバーによってはBasic認証の機能自体がない場合もあるので注意が必要です。

自分が使っているサーバーのBasic認証の機能の有無を知りたい場合は、使っているサーバーの名称とBasic認証の2つのキーワードをGoogle検索などで検索するとわかりますので、まずは確かめてみてください。

Basic認証の注意点2.セキュリティ面がやや心配

Basic認証はユーザー名とパスワードを入力しログインできる機能なので、セキュリティも万全!と思われがちです。

しかし実際のところは逆で、Basic認証でログイン情報を送信する際にBase64というエンコード方式を利用するため、安全性に欠けると言えます。

Base64の64はアルファベットと数字、一部の記号64文字という意味がありますが、つまり送信したデータを64文字に変換して送信するわけで、更には暗号化もされていないため見る人が見れば「このサイトのユーザー名とログイン名はこれだ」というのがわかっちゃうので安全性が低いと言えるわけですね。

ですので、Basic認証を過信しすぎないことが大切です。
ただアドレスがhttpsの場合はSSL化(暗号化)ができていますので、その場合はそもそもサイト全体が暗号化されていると言えますから、Basic認証のセキュリティ面も問題ないと言えるでしょう。

これからBasic認証をサイトに設定する方は、できるだけ設定するサイトのSSL化をすませておきましょう

Basic認証の注意点3.クローラーがアクセスできないので検索に載らなくなる

Basic認証を設定すると、クローラーがアクセスできなくなるため検索に載らなくなります。

クローラーと言うのは、検索結果にサイトを表示するために常にインターネットを巡回しているロボットです。
私たちが作るサイトにもたびたび訪れ、サイトの情報を調べ検索結果に表示してくれます。

しかしBasic認証を設定すると、クローラーはログインできないので検索に載らなくなるのですね。
もし、検索結果に載るようにはしたい場合、Basic認証以外の方法を探すようにしましょう。

Basic認証の注意点4.Basic認証の範囲は設定されたディレクトリ内のみ

Basic認証を設定して適用する範囲は設定されたディレクトリ内のみです。
つまり、設定された場所の外ではBasic認証が適用されないわけですね。
もっとかみ砕いて例えてみましょう。

A
Basic認証
BC

例えばAとBとCがあったとして、AにBasic認証を設定したとします。
同じサーバー内であっても、BとCの中にはBasic認証を設定していないため、ログイン画面は出てきません。

では次に以下のような場合はどうでしょうか。

A
Basic認証
BCD

Aの中にBとCとDがあり、AにBasic認証を設定したとします。
この場合、A全体がBasic認証の範囲となるわけですから、BとCとDにもBasic認証が適用されます。

これが何を表しているかと言うと、Basic認証の範囲は設定されたディレクト内のみですが、これはつまり「設定されたディレクト内であればどれでもBasic認証が適用されてしまう」ということでもあるわけです。

サブドメインを設定している場合、親のドメインにBasic認証を設定すると場所によってはサブドメインにまでもBasic認証が及ぶのでその点も注意したほうが良いですね。
また、Basic認証をサイト内の限定されたページのみにしたい場合も注意が必要です。

Basic認証の使い方・設定方法

Basic認証を設定する方法は2つあります。

  1. サーバーの機能を使う
  2. エディターに書いて設定する

簡単なのは断然、サーバーの機能を使う方法ですが、ここでは両方とも解説します。

Basic認証設定方法1.サーバーの機能を使う

Basic認証を設定するための方法はサーバーによって異なりますので、お使いのサーバーの公式サイトを見てお試しください。
以下に、有名サーバーのBasic認証を解説している公式サイトのページをリンクしてありますので、併せて参考にしてください。

Basic認証設定方法2.エディターに書いて設定する

Basic認証をサーバーの機能を使わずに設定するためには、自分でエディターで書いてFTPソフトなどで作成したファイルをアップロードする必要があります。

作るファイルは2つです。
以下の流れで行いましょう。

  1. エディターをダウンロード
  2. .htaccess(ファイル)を作成
  3. .htpasswd(ファイル)を作成
  4. FTPソフトでサーバーにファイルをアップロード
  5. Basic認証ができているかチェック

分けて解説します。

①エディターをダウンロード

パソコンに元々あるテキストエディタでも問題ないのですが、時々テキストエディタの文字コードの関係で「ちゃんとファイルを作ったのにうまくいかない……」といったことが起こります。

ですので、エラーを避けるために事前にコードに強いエディタをダウンロードしておくと良いでしょう。
勿論、元々パソコンに入っていあるエディタで試してみて、エラーが出てから別のエディターをダウンロードして再挑戦するといった方法でも問題ないです。

おすすめエディタはこちら

②.htaccess(ファイル)を作成

AuthType BasicAuthName “Basic認証の名前(できれば半角英数字)”
AuthUserFile “.htpasswdファイルの場所をフルパスで書く”
require valid-user

まずは.htaccessファイルを作成します。
エディターを開いたら、上記の4行を記載してください。
この文字列にどういう意味があるのかは以下を参考にしてください。

●Auth Type Basic:

認証はどの方法でするか、こちらで指定しています。
今回はBasic認証ですので、Auth Type Basicと記載しています。

●AuthName:

今回設定するBasic認証の名前はどうするか記載する場所です。
名前は特にこの名前じゃないといけない!というものはありませんが、半角英数字で指定すると文字化けなども起きなくなるのでおすすめです。

必ず「””」ダブルクオーテーションで囲んでください。
例:AuthNameの名前をtestとする場合は「AuthName”test”」と記載します。

●AuthUserFile:

.htpasswdファイルはどこにあるか記載する箇所になります。
今回作成しているファイルではなく、次の項で作成するファイルの場所ですね。

htaccessファイルと同じ場所でも違う場所でも問題ないですが、今回はBasic認証を設定する場所にhtpasswdファイルも設定すると仮定して進めます。

フルパスはURLではなくて、サーバー内のアドレスのようなものですので調べてから記載しましょう。
フルパス自体はサーバーによって変わりますので、この点も注意が必要です。
もし調べ方がわからない場合は、以下の方法をお試しください。

1.新しいファイルを作成し「<?php echo __FILE__; ?>」と記載

2.ファイルを任意の名前で保存(今回はtest.phpとします)保存するのはどこでも良いですが、わかりやすいデスクトップがおすすめです。保存するときの名前は何でもいいですが、phpファイルとして保存してください。

3.Basic認証設定予定の場所ににファイルをアップロードする実際にBasic認証を設定するディレクトリ内に作成したファイルをアップロードします。アップロードするためのソフトはなんでも良いですが、FTPソフトをまだ持っていない場合はFile Zillaが使いやすくおすすめです。

4.ファイルをウェブで確認するBasic認証設定予定のサイトURL/●●.phpとブラウザに入力しフルパスを確認します。例えば「testueeeei.com」というサイトにBasic認証設定したい場合、testueeeei.comのディレクトリに上記で作ったファイルをアップロードしていますから、ブラウザで「https://testueeei.com/test.php」と入力し表示される文字列を確認します。すると以下のような文字列が表示されます。この文字列がフルパスなので、メモしておいてください。

5.アップロードしたファイルを削除するフルパスを調べるために作成した上記のファイルを、サーバーから削除します。こちらはフルパスを確認後、必ず削除してください。

フルパスを調べ終わったら、AuthUserFileの箇所に「”フルパス/.htpasswd”」と記載しましょう。

●require valid-user

こちらは訪れた全ての人に認証を求めますという記述ですので、いじらずそのまま記載します。
全て記載できたら、以下のような文が出来上がります。

AuthType Basic
AuthName “test”
AuthUserFile “調べたフルパス/.htpasswd”
require valid-user

記載が終わったら、「.htaccess」という名前で保存します。

※ワードプレスの場合は既に.htaccessファイルが存在しています

ワードプレスの場合は、既に.htaccessファイルがありますので、サーバーの機能であるファイルマネージャーで.htaccessファイルを開くか、FTPソフトで.htaccessファイルをダウンロードして開いてください。

ワードプレスの.htaccessファイルには以下の文章が書かれています。

SetEnvIf Request_URI “.*” Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI “.*” Ngx_Cache_AllCacheMode

# BEGIN WordPress
# “BEGIN WordPress” から “END WordPress” までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

この文章の中で、赤色にした部分#BEGIN WordPress~#END WordPressは絶対にいじらないでください。
先ほど作った.htacessファイルの中身を#BEGIN WordPressの直前に挿入します。

SetEnvIf Request_URI “.*” Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI “.*” Ngx_Cache_AllCacheMode

AuthType Basic
AuthName “test”
AuthUserFile “調べたフルパス/.htpasswd”
require valid-user

# BEGIN WordPress
# “BEGIN WordPress” から “END WordPress” までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

挿入したら上記のようになります。
(わかりやすいように挿入した部分は青色にして表示しています。)

ファイルマネージャーで開いている場合は保存し、FTPソフトでダウンロードしている場合は保存した後に再度FTPソフトでアップロードし上書きしてください。

③.htpasswd(ファイル)を作成

次にhtpasswdファイルを作成します。
エディタで新規ファイルを作成し、以下の文を入力してください。

ユーザー名:暗号化したパスワード

htpasswdファイルにはユーザー名と暗号化したパスワードのみの入力です。
もし2人以上のユーザーとパスワードを設定する場合は、改行して同じように入力してください。

ユーザー名:暗号化したパスワード
ユーザー名:暗号化したパスワード
ユーザー名:暗号化したパスワード
ユーザー名:暗号化したパスワード

ユーザー名は半角英数で設定しますが、何でもいいです。
好きなユーザー名を設定してください。

問題なのが「暗号化したパスワード」ですが、こちらはその名の通り暗号化したパスワードを入力しなければなりません、
予定しているパスワードをそのまま入力しても、エラーになってしまうだけなので気を付けてください。
暗号化は以下のサイトを利用して作成します。

https://www.luft.co.jp/cgi/htpasswd.php

こちらの、IDにユーザー名、Passwordに予定しているパスワードを入力してから「生成」を押してください。
ここではユーザー名を「test」、パスワードを「demo」にし生成してみます。

すると下の方に、暗号化されたパスワードが生成されてますのでコピーします。

コピーしたそのままをhtpasswdファイルにペーストしたら、ファイルを「.htpasswd」の名前で保存してください。

④FTPソフトでサーバーにファイルをアップロード

※サーバーの機能のファイルマネージャーでアップロードできる場合はFTPソフトではなく、ファイルマネージャーを利用しても問題ありません。

FTPソフトを起動して、サーバーに繋いでください。
繋ぎ方がわからない場合は、「使っているサーバー名」「FTP」この2つのキーワードを組み合わせて検索し、FTPソフトを繋ぐ方法を調べ繋いでください。

FTPソフト自体がない場合は、File Zillaなどのフリーソフトを利用しましょう。
繋いだら、Basic認証をかけたいディレクトリに作成した「.htaccess」「.htapasswd」ファイルをアップロードします。

⑤Basic認証ができているかチェック

実際にBasic認証できているかチェックしましょう。

ログインのポップアップが現れたら、.htpasswdで設定したユーザー名とパスワードを入力します。
パスワードは暗号化する前のものを入力し、ログインを押してください。
サイトが表示されたら無事Basic認証設定成功です。

Basic認証についてよくある質問

ここからは、Basic認証についてよくある質問をまとめています。
Basic認証でわからないことがあれば、こちらも是非参考にされてください。

サブドメインにのみBasic認証を設定したい

サブドメインにのみBasic認証を設定したい時もありますよね。
そんな時は、サブドメインのディレクトリに上記の方法で.htaccessファイルと.htpasswdファイルを設定してください。

サブドメインは除外してBasic認証を設定したい

サブドメインを除外してBasic認証を設定したい場合は、除外したいディレクトリに以下の内容を記載した.htaccessファイルを設置してください。

Satisfy Any

「Satisfy Any」と書かれた.htaccessが設置されているディレクトリはBasic設定除外になりますので、除外したいサブドメインに設置しておきましょう。

ワードプレスで簡単にBasic認証したい

ワードプレスでBasic認証を設定するとき、ファイルもサーバーも触りたくないということもありますよね。

そんな時はプラグインを使いましょう。
「HTTP Auth」というプラグインなら、とても簡単にBasic認証できて便利です。

使い方は以下になります。

ワードプレスの管理画面でプラグインを選択、新規追加をクリックして「HTTP Auth」と検索欄に入力してください。
すると、上記のようなアイコンのプラグインが出てくるのでインストールします。
インストール後、有効化したら管理画面の左側を見てください。

左側に「HTTP Auth」というメニューが出現していますので、そちらをクリック。

任意のUsernameとPasswordを設定し、Complete Site(サイト全体)とLogin and Admin Pages(ログイン画面と管理画面)のどちらにBasic認証をかけるかを選んで、Save Changesを押すとBasic認証完了です。

.htaccessの記述の順番は記載通りじゃないとダメ?

本記事では、以下のように書くと紹介しましたが、

AuthType Basic
AuthName “Basic認証の名前(できれば半角英数字)
“AuthUserFile “.htpasswdファイルの場所をフルパスで書く”
require valid-user

この順番に特に決まりなどはないので、Auth Type Basicがあとでも良いですし、AuthNameが始めでも良いです。
ただこちらは最低限の記述なので、必ずすべて記述するようにしてください。

プラグインを使わずにワードプレスのログイン画面にBasic認証をかけたい

プラグインを使わずにワードプレスのログイン画面にBasic認証を設定する場合、.htacccesファイルに以下の記述を追加してください。

<Files wp-login.php>
AuthType Basic
AuthName “Basic認証の名前(できれば半角英数字)”
AuthUserFile “.htpasswdファイルの場所をフルパスで書く”
require valid-user
</Files>

※わかりやすいように追加部分を赤色にしています。

ログイン画面のセキュリティを強化したいなら是非取り入れたいですね。
この場合、必ずSSL化するようにしてください。

AuthNameは何故半角英数が良いの?

.htaccessでは、半角英数字だけの場合は文字コードがShift-JISまたはEUC-JPで問題ないとされているのですが、日本語などの全角文字を含む場合は文字コードがUTF-8で改行コードはLF、ファイル最終行には空行をいれるといった決まりが出てきます。

コードに慣れている人であればこういった決まりも特に難なくやってのけるのですが、コードに慣れていない人の場合は複数の決まりがあることでうまく設定できなくなる可能性が出てくるのです。

どうしても日本語を使いたい場合は挑戦してみる価値はありますが、特に拘りがない場合は半角英数字を使うほうが手間もないですし、考えることも少なくなるのでおすすめです。

何度やってもうまくいかない

稀にFTPソフトの転送モードでエラーが出る場合があります。
この場合は、一度どの転送方法かFTPソフトを確認し、バイナリーモードならアスキーモードにしてみるのも手です。

(基本的にはバイナリーモードでOK!技術が発達して現在はバイナリーモードのみでも動作するようになっています。)

その逆で、アスキーモードになっているのをバイナリーモードにして再度試してみても良いでしょう。
また、全角のスペースが入っていることでエラーが起こる場合もありますから、全角スペースなどが入っていないかもチェックしてみてください。

まとめ

Basic認証は誰でも簡単にできる認証方法です。

基本的には、サーバーで用意されている機能で設定するのが一番確実で簡単でおすすめですが、直に設置するのも勉強にもなりますし仕組みを理解できて良いですよね。

本記事でも触れたように、もしBasic認証をこれから行う場合はSSL化をすませてから行いましょう。
SSL化をすませていないサイトは、見る人が見ればすぐに中身を暴かれてしまいます。

これはBasic認証をしていたとしてもなので、セキュリティ面もしっかり対策したい方は必ずSSL化をすませてからBasic認証を行うようにしてください。

本記事がBasic認証を設定する際の参考になれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次