.htaccessによる認証

| | コメント(0) | トラックバック(0)

インターネットで次のような認証画面がホップアップしてきてユーザー名とパスワードを知らないと入れないページがある。
  
    s-htaccess.jpg

これはApacheのベーシック認証機能を使った認証画面で、この機能を使えばユーザー名とパスワードを知っている人しかアクセスできないページが意外と簡単にできる。

この機能は特定の人を対象にした掲示板とか、写真などを置いておいて知り合いだけに公開するなど使い道は色々あると思う。
私は、現在構築中のデーターベースのメンテナンスページを隠すのに利用使用と思っている。

原理は制限をかけたいディレクトリに「.htaccess」というテキストファイルを置き、別の場所にそのユーザー名とパスワードの記した「.htpasswd」と言う名前のテキストファイルを置くだけだ。
ただし、レンタルサーバーで利用するには、WebサーバーにApacheを利用している事と、「.htaccess」の利用を許可している事が必要になる。

1.Apache「httpd.conf」ファイルの変更
Apacheサーバーの「httpd.conf」で設置する該当のディレクトリに「AllowOverride All」を指定する必要がある。
デフォルト設定では「AllowOverride None」と無効になっている。

    <Directory "C:/www/public_html">
      AllowOverride None
    </Directory>
      ↓変更
    <Directory "C:/www/public_html">
      AllowOverride All
    </Directory>


2.「.htaccess」ファイルの作成
テキストエディタで次のように記述する。
C:/www/public_htmlに置くとすべてのアクセスが制限されるが、C:/www/public_html/hogeに置くと/hogeがその対象となる。

.htaccess-----------------------------------
AuthType Basic
AuthName "Please enter userID and password"
AuthUserFile /home/www/.htpasswd
require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
deny from all
</Files>

--------------------------------------------
・「AuthType」は、認証タイプ Basicを指定する。
・「AuthName」は、認証時に表示される認証名を入力する。
  ここは自由に書きかえることも可能だが、
  日本語を使うとは文字化けする可能性あり。
・「AuthUserFile」は、パスワードファイル「.htpasswd」(後で作成)
  へのパスを記入する。パスは、URLや相対パスではなく、
  絶対パスでホームディレクトリから記入する。
  (レンタルサーバーの場合は要確認)
・「require valid-user」は、グループ名など指定するが、
 「.htpasswd」を使用するので、このままでよい。
・ <Files・・・以下の欄は必須ではないが、「.htpasswd」と「.htaccess」  といったファイル名をWeb上から閲覧できなくなるような記述である。
・最後に改行する。

3.「.htaccess」ファイルの保存
このファイルを「.htaccess」の名前で保存する。

Windowsの場合は「.」で始まるファイル名には通常操作では後からは変更できないので、テキストエディタ保存時に「.htaccess」の名称で保存する。

もし拡張子.txt等通常名で保存した場合は「コマンドプロント」から次のように「rename」コマンドで名前を変える事ができる。

-----------------------------------------------------------
C:\Users\hoge>rename C:\Users\hoge\htaccess.txt .htaccess
-----------------------------------------------------------

4.「.htaccess」ファイルの配置
このファイルを閲覧制限をかけたいディレクトリの置く。

C:/www/public_html等のホームディレクトリに置くとすべてのアクセスが制限されるが、C:/www/public_html/hogeのように配下ディレクトリのに置くとそのディレクトリ(/hoge)以下ががその対象となる。
レンタルサーバーの場合は /home/user/public_html/hoge などになる。

5.「.htpasswd」ファイルの作成
このファイルの中には「ユーザー名」・「パスワード」が記する。
パスワードは万が一の為に"MD5"で暗号化する。
「.htpasswd」ファイルを作成する為に、Apacheには標準でインストール先binフォルダの中に「htpasswd.exe」がある。
この機能を使うと、暗号化されたパスワードを記載したファイル生成される。
使用方法はコマンドコマンドプロントから以下のようにし、パスワードの設定を要求されるので、2回入力する。
-----------------------------------------------------------
C:\>c:\apache2\bin\htpasswd -mc c:\apache2\.htpasswd kumao
New password: *********
Re-type new password: *********
Adding password for user kumao
-----------------------------------------------------------
・「C:\apache2\bin\htpasswd」は、「htpasswd.exe」の場所を指定する。
・オプション「-c」は、「新規ファイル作成」を実行する場合の指示し、
 以後、同じファイルにユーザー名を追加する場合は、「-m」オプションのみとする。
・「C:\.htpasswd」は、「新規ファイル作成場所」と
 「作成ファイル名」の指定です。
・「kumao」は、「認証を行うユーザー名」。

この方法で生成された「.htpasswd」の中身は
.htpasswd------------------------------------
kumao:$apr1$gs4.....$NFAr7x3Wv701LSMkjcMZR1
---------------------------------------------
のように、
ユーザー名:暗号化されたパスワード
の形式で記述され、ユーザーを増やせば、順次追加される。

6.「.htpasswd」ファイルの配置
「.htpasswd」ファイルはどこにおいてもいいが、気持ち悪いのでユーザがWeb上からアクセスできないところに置く。
つまり、公開ディレクトリの上(public_htmlなどのディレクトリと同じ位置)に置き、そのパスは上記「.htaccess」のAuthUserFileに指定する。

7.ファイル配置場所のまとめ

  http://hoge.com (架空)
   C
   └ /www ... (ここに「.htpasswd」を配置)
     └ /public_html
        └/himitu (認証ディレクトリ) ... (ここに「.htaccess」を配置)

8.動作確認テスト
Apacheを再起動して、「.htaccess」を配置したディレクトリにブラウザから
http://hoge.com/himitu/とかhttp://localhost/himitu/のようにアクセスすると認証画面がホップアップしてくるので、ユーザー名とパスワード入力してアクセス可能になれば成功である。(このディレクトリにindex.html等があればそれが表示される。)

posted at 2007/12/04 20:26 | ku

トラックバック(0)

このブログ記事を参照しているブログ一覧: .htaccessによる認証

このブログ記事に対するトラックバックURL: http://kumao.net/mt/mt-tb.cgi/13

コメントする

KUMAOの押入TOP

カウンタ

Twitter

books

最近のブログ記事

このブログ記事について

このページは、kumaoが2007年12月 4日 22:56に書いたブログ記事です。

ひとつ前のブログ記事は「ローカルサーバー構築 〜その4〜phpMyAdmin」です。

次のブログ記事は「target="_blank"を使わずに別ウィンドウを開く」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

にほんブログ村 IT技術ブログへ
無料テンプレートならテンプレートキング

books