ホーム > スポンサー広告 > Basic認証のための「.htaccess」ファイルの書き方ホーム > 未分類 > Basic認証のための「.htaccess」ファイルの書き方

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- ] スポンサー広告 |

Basic認証のための「.htaccess」ファイルの書き方

通常Webサイトは全ての人に開かれているものですが、会員限定ページのように限られた人にのみアクセス可能としたい場合があります。これは一般的に「アクセス制限」と呼ばれます。

 

今回はそのアクセス制限方法の中でも最も簡単なBasic認証(基本認証)の設定方法について解説します。

 

.htaccessによる2つの認証方法

多くのレンタルサーバーではApacheと呼ばれるWebサーバが利用されています。Apacheサーバでは.htaccess(ドットエイチティーアクセス)というファイルを用意することでディレクトリ単位での制御・設定を行うことができます。

 

.htaccessファイルにより行える設定は様々ありますが、その一つにアクセス制限(認証)があります。最も一般的な「ユーザ名(ID)とパスワード」による認証方法としてはBasic認証とDigest認証があります。

 

Basic認証はお手軽ですがユーザ名(ID)とパスワードが暗号化されないためセキュリティー上問題があります。それに対し、Digest認証は手順が複雑ですが、IDやパスワード情報が暗号化(ハッシュ化)されるため盗聴・改ざんに強い仕組みになっています。

 

機密性が高いデータを扱う場合、Basic認証は適切ではありません。しかし、仮に盗聴によりBasic認証が破られたとしても大した問題にはならないような個人サイトでは、手軽なBasic認証で十分です。

 

 

Basic認証の特徴

Basic認証はディレクトリ単位でのアクセス制限をかけることが可能です。例えば以下のようにcccディレクトリ内のコンテンツに対しアクセス制限をかけ会員の人にのみ情報を公開するといったことができます。

 

http://pcinfo.org/aaa/ (全てのユーザーに公開)

http://pcinfo.org/bbb/ (全てのユーザーに公開)

http://pcinfo.org/ccc/ (会員のみに限定公開)

 

ただし誤解しないで頂きたいのは、Basic認証は別に会員ページを作る仕組みではありません。あくまで特定のディレクトリに対しアクセス制限をかけるための仕組みにすぎません。

 

まず、Basic認証にはログイン・ログアウトという概念がありません。

 

認証が必要なページ(上の例ではhttp://pcinfo.org/ccc/)にアクセスするとユーザ名とパスワードを求めるダイアログが表示されます。そこに必要項目を入力すると認証されcccディレクトリのコンテンツにアクセスできるようになります。

 

一度認証されれば、ブラウザを閉じるまではその認証はずっと有効です。一旦別のページや他サイトに移動しても認証状態は継続されます。しかし、ブラウザを一度閉じてしまい再度Basic認証のページにアクセスするには、またユーザ名とパスワードを入力しなおす必要があります。

 

あえてログイン・ログアウトという言葉に当てはめるならば、ユーザ名とパスワード入力がログイン、ブラウザを閉じることがログアウトに相当すると考えることができます。

 

以下にBasic認証の特徴をまとめます。

 

・認証されれば、ブラウザを閉じるまで有効。

・認証ページから離脱しても、再認証の必要なし。

・ネットとの接続を中断し再接続した場合でも、再認証は不要。

 

 

.htaccessの書き方

Basic認証に必要な.htaccessファイルの書き方について説明します。この記事では大まかな部分を解説しますので、詳細については以下のサイトでご確認ください。

 

認証、承認、アクセス制御(Apache本家サイト)

 

まず、「.htaccess」というファイルを作成する必要がありますが、このファイルに拡張子はありません。Windows上では拡張子無しのドットから始まるファイルを作成することはできません。

 

従いまして、Windows上で「.htaccess」を作成する場合には、一旦「.htaccess.txt」という拡張子付きのテキストファイルを作成し、FFFTP等でサーバ上にアップロードした上で「.htaccess」にリネーム(名前変更)する必要があります。

 

 

.htaccessファイルに最低限記述する必要がある内容は以下の通りです。

 

AuthUserFile /virtual/username/public_html/pcinfo.org/secret/.htpasswd
AuthName "PCinfo Secret"
AuthType Basic
require valid-user

 

レンタルサーバーによってAuthUserFileの書き方が異なってきます。ディレクトリパスの指定方法は各レンタルサーバーのヘルプを参照してください。ここではコアサーバー(CORESERVER)での設定例を示します。

 

AuthUserFile パスワードファイルへのパス

AuthUserFile /virtual/username/public_html/pcinfo.org/secret/.htpasswd

認証のためのIDとパスワードが記述された「.htpasswd」のファイル位置を指定します。

 

Basic認証のためには「.htaccess」ファイルとは別に、認証のためのユーザー名とパスワードを記述した「.htpasswd」ファイルが必要となります。このファイルの作成方法はあとで説明します。

 

「.htpasswd」ファイルはBasic認証をかけたいディレクトリに設置します。今回の例では「http://pcinfo.org/secret/」をBasic認証が必要なページとしたいので、secretディレクトリ内に「.htpasswd」ファイルを配置する必要があります。

 

なお、secretディレクトリ内の下位ディレクトリについても自動的にBasic認証ページとなります。例えば以下のディレクトリはBasic認証の対象範囲となります。

 

http://pcinfo.org/secret/aaa/

http://pcinfo.org/secret/bbb/

http://pcinfo.org/secret/ccc/

 

AuthName 認証領域

AuthName "PCinfo Secret"

これはベーシック認証を複数設定したい場合の識別子となる文字列です。例えば以下のように異なるディレクトリに異なるBasic認証を設定したい場合、このAuthNameの文字列で区別します。

 

http://pcinfo.org/secret1/ AuthName "PCinfo Secret1"

http://pcinfo.org/secret2/ AuthName "PCinfo Secret2"

 

しかしBasic認証を設定したいディレクトリは1つだけという場合は、AuthNameに大した意味はありません。ユーザー名とパスワード入力を求める認証ダイアログに表示される文字列くらいに思っておいて問題ないです。

 

サイトによっては以下のような感じでいいんじゃね?と解説している所もありますね。

AuthName "Please enter your ID and password"

 

個人的にはAuthNameは認証領域の識別子と考えてますので、これはちょっとどうかな?と疑問に思えます。少なくともAuthNameの文字列を日本語にするのは避けた方がいいです。環境によっては文字化けしますので。

 

AuthType 認証方式

AuthType Basic

Basic認証であることを表しています。

 

.htaccessファイルで指定できる認証方式はBasic認証とDigest認証の2種類があることは最初に説明しました。もしDigest認証を行いたい場合は「AuthType Digest」と書くことになります。

 

require valid-user

認証を許可するユーザーの指定を行います。valid-userとすることで、「パスワードファイルに書かれた全てのユーザーのアクセスを許可する」という意味になります。

 

なお以下のように記述することで、許可するユーザーを限定することも可能ですが、詳しくは先に紹介したApatch本家サイトをご参照ください。

 

require username1 username2

 

 

ファイルの閲覧制限

環境によっては「.htaccess」と「.htpasswd」がブラウザから見えてしまう可能性があるため以下の記述によりそれらのファイルを見ることができないようにします。

 

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>

 

私が確認した環境では、この3行がなくとも「.htaccess」や「.htpasswd」ファイルをブラウザで見ることは出来ませんでしたが、レンタルサーバーのApatchの設定によっては見えてしまうことがあるのかもしれません。

 

念のため「.htaccess」ファイルにこの3行を追加しておくとよいでしょう。

 

 

おわりに

Basic認証の話はまだ終わりではありません。ユーザー名とパスワードのリストを記述したパスワードファイル「.htpasswd」を作らねばなりません。

 

次回は、Basic認証のための「.htpasswd」ファイルの書き方の説明をします。

[ 2011/03/16 ] 未分類 |

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。