2014/09/12

最も簡単な認証方法!Basic認証の特徴と設定方法

ウェブサイトへのアクセスを制限する方法は数多くありますが、今回ご紹介するBasic認証は、最も簡単に導入が出来る認証方法になります。

Basic認証を導入すれば、例えばクライアントとのテストサイト共有の際、第三者の目に触れるリスクを無くすことが出来ます。また、検索エンジンのクロールも拒否できるためインデックスされないという利点もあります。

今回はこのBasic認証のメリット・デメリットと導入方法をご紹介します。

目次

Basic認証とは

Basic認証とは

Basic認証は、基本認証とも呼ばれる、最も簡単な認証方法の一つです。

あらゆる環境に対応しており、簡単な方法で設定することが可能なため、広く利用されています。

Basic認証の特徴

Basic認証の特徴

IDとパスワードを用いて認証を行いますが、Base64という印字可能な64種類の英数字(A-Z、a-z、0-9)のみを使用してエンコードするため、改ざんが容易であるなどセキュリティ面で問題があります。
こちらの問題を解決するためにDigest認証が考案されました。Digest認証に関しては別の機会に解説します。

Basic認証は一度認証を行うとブラウザを閉じるまで有効になります。IDとパスワードで認証を行わない限りアクセスが出来なくなるため、検索エンジンもクロールすることが出来ません。

Basic認証の設定方法

Basic認証の設定方法

Basic認証を設定するには、.htaccessと.htpasswdの2つのファイルを用意します。

.htaccessの書き方

.htaccessにはサーバーの設定を記載します。

AuthUserFile ルートディレクトリからのパス/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic

require valid-user


deny from all

行ごとに解説していきます。

1行目
AuthUserFile ルートディレクトリからのパス/.htpasswd

ここには.htpasswdファイルまでのパスを記述します。サーバのルートディレクトリからのパスになりますので、パスを間違うと動きませんので注意して下さい。

2行目
AuthGroupFile /dev/null

ここではグループ単位でのアクセス制限を行うかどうかを設定しています。あらかじめグループを設定しておけば、個別に設定する必要がなくなります。グループ単位の設定を行う場合は、ここにグループ設定が書いてあるファイルまでのパスを記述します。

今回はグループ単位の設定はしませんので、/dev/nullと記述します。「そのようなファイルはない」という意味ですので、個別に設定するということになります。

3行目
AuthName "Please enter your ID and password"

3行目では認証領域の設定をしています。ここではwebサーバが「Please enter your ID and password」という認証領域に対して認証を行うと記述されています。

一括で設定する場合は任意の文字列で問題ないかと思いますが、ディレクトリごとに個別に.htaccessと.htpasswdを用意している場合、重複しないようにする必要があります。別のファイルで同じAuthNameを設定してしまうと、ディレクトリを行き来する度に認証を求められるはめになり、非常に煩わしくなってしまいます。AuthNameが重複していなければ、本来の動作と同じくブラウザを閉じるまで有効になります。

4行目
AuthType Basic

ここでは認証の方式について設定をしています。Apacheでは、Basic認証かDigest認証のどちらかしか使えませんので、どちらかを記述します。今回はBasic認証なので、Basicと記述します。

6行目
require valid-user

ここでは認証を許可するユーザーについて設定します。validとは正当なという意味に当たる言葉です。.htpasswdに記述されているユーザーのみに許可を与えるということになります。

8~10行目

deny from all

ここでは、ブラウザから.htaccessと.htpasswdファイルを見ることが出来ないよう設定しています。

.htpasswdの書き方

.htpasswdには、ユーザー名とパスワードの組み合わせを記述します。

ユーザー1:パスワード1
ユーザー2:パスワード2
ユーザー3:パスワード3

ユーザー名とパスワードをコロンで繋いで記述します。ユーザー名はそのまま記述しますが、パスワードはパスワードの文字列そのものを記述するのではなくエンコードしたものを記述します。以下のサイトなどで、パスワードのエンコードをすることが出来ます。

.htaccess ファイルを簡単作成「.htaccess Editor」

認証自体はエンコードする前のパスワードを使用しますので、エンコードする前のパスワードもしっかり保管しておいて下さい。

 

生成した.htaccessと.htpasswdをFTPなどでアップロードすれば設定完了となります。

まとめ

Basic認証は以上の通り、簡単な設定でページに閲覧制限をかけることが出来ます。しかし、前述しましたがセキュリティに関しては万全ではありませんので、しっかりと使用する場面を考慮した上で設定するようにして下さい。