ホームページにパスワードを付ける方法


BASIC認証とは?

この認証方法は、別名「UNIX標準認証」とも呼ばれています。 通常ホームページは対外的に公開してだれにでも見てもらう事が出来るわけですが 時には特定の人たちしか見る事の出来ないページを作成したくなる事もあります。 そこでホームページを見るにはパスワードを入力しなければ見る事が出来ないように ホームページに仕掛けを設ける事が出来ます。その方法の一つにBASIC認証と 言う方法があるのです。UNIXにログインするにはユーザー名とパスワードが 必要ですがホームページにも同様の方法でアクセスする事が出来る様になります。 認証方法にはいろいろなものがあります。CGIによる方法、JavaScriptによる方法 等ありますが、今回紹介するBASIC認証が一般的であり他の方法に比べて セキュリティ面でも心配を生じさせない環境を作る事が出来ます。そういうわけで このページではBASIC認証によるパスワード設定方法を紹介します。



事前に調べておく事

お使いのプロバイダのサーバーはBASIC認証(UNIX標準認証)を許可して いますか?それが許可されていなければこの方法を用いる事は出来ません。 その場合はCGIやJavaScript等での方法に切り替えて下さい。 (その方法はここでは紹介しませんが・・・)
それからユーザーディレクトリの「絶対パス」を調べておいて下さい。 それがわからなければパスワードファイルを置いたとしてもサーバーがそれを 参照できないからです。多くのサーバでは /usr/home/username であったり /home/username であったりしますが必ずしもそうではありません。あるサーバでは バーチャルドメイン方式を用いていて「普通」のディレクトリではない場合が あります。わからない場合はサーバー管理者やISPに問い合わせてください。 どうしても分からない場合次のCGIをユーザーディレクトリで実行して SCRIPT_FILENAME と言う項目を参照して下さい。そこには environ.cgi の ある絶対パスが書かれてあるはずです。

環境変数を表示するCGI



パスワードを施すページのディレクトリに .htaccess を作成

もしあなたのユーザ名が「username」だとします。するとあなたのホーム ディレクトリの絶対パスは多くの場合 /usr/home/username であるか /home/username かであることでしょう。いずれにしてもあなたの ホームディレクトリには public_html というディレクトリが存在するでしょう。 そのディレクトリがあなたのホームページのトップディレクトリになります。 通常自分のホームページをパスワード保護する場合その配下のディレクトリの どこかに .htaccess と言うファイルを置くことにより認証の必要なページと することが出来ます。.htaccess を置いたディレクトリとその配下のディレクトリには ユーザー名とパスワードを入力しなければ入室することが出来なくなります。 ではそのファイルの中身について解説しましょう。ファイルの中身の概要は 次のとおりです。

AuthType BASIC
AuthUserFile /home/username/public_html/etc/passwd.dat
AuthGroupFile /dev/null
AuthName "Enter password"
<limit GET POST>
require valid-user
</limit>

1行目と3行目そして5行目はそのままで良いでしょう。
2行目はパスワードファイルの場所を「絶対パス」で書き込みます。
4行目にはログインするときのダイヤログに表示するメッセージを書きます。
6行目の require valid-user はパスワードファイルに書いたユーザーはすべて 許可する設定です。
そこを repuire user username と書くなら username の人については入室を許可する 設定となります。(apacheのバージョンによって user が不要な場合もある。)
7行目の行はこのファイルの締めくくりですがこの行の末尾には改行が必要です。 もし改行文字がなければちゃんと動いてくれないでしょう。

さて、ファイル名の先頭はピリオドで始まります。コンピュータの中には最初から 素直にピリオドで始まるファイル名が作成できない時があります。そういう時は 転送した後にリネームするなどして対応してください。



パスワードファイルを作成する

前のセクションでパスワードファイルの場所を指定していました。(前セクションの 説明ではファイル名は passwd.dat)では今度はその肝心のパスワードファイルを 作成します。実はこの部分が一番難しい部分と言えるかも知れません。 なぜならこのファイルはパスワードが暗号化されており、これを作るにはあるツールが 必要となるからです。あなたの利用しているプロバイダでは htpasswd と言う 実行ファイルが提供されているでしょうか?試しに telnet でログインして htpasswd と言うコマンドを起動してみてください。(単にプロンプトから htpasswd と打って リターンキーを押すだけです)エラーにならずに

Usage: htpasswd [-c] passwordfile username
The -c flag creates a new file.

このようなメッセージが表示されるならあなたはラッキーです。それを用いて パスワードファイルを作成できるからです。(もしかすると単にパスが通って いないだけかもしれないので htpasswdの有無についてはプロバイダの管理者に たずねてみて下さい)
しかしそれが出来なくても安心してください。このホームページには htpasswd の 代わりとなるものが準備されているからです。それは別途説明します。

ではパスワードファイルを作成しましょう。一番最初はこのようにします。 パスワードファイルを作成したいディレクトリに移動しておいて下さい。

htpasswd -c passwd.dat username

このように打つと username と言うユーザーを登録できます。passwd.dat の ファイルは新規作成されます。ファイル名は passwd.dat に決まっているわけでは ありません。自由に決める事が出来ます。ここで注意することは新規作成でないのに -c のオプションを付けてしまったりすると以前まで試用していた passwd.dat は 消えてしまうので注意してください。ユーザーの追加の場合は -c を付けないでください。 パスワードの更新の時にも -c は付けないでください。自動的に更新されます。

さて、htpasswd が利用できないときは このページ(htpasswdを持っていない人の為に) を利用して下さい。
案内にしたがってユーザー名とパスワードを入力しパスワード生成のボタンを 押します。すると「username:password」の形でパスワードファイルの一行が作成 されますので、それをご自分でエディタに切り出してパスワードファイルを テキストエディタ等で作成・編集して下さい。



パスワード保護できるようになりましたか?

以上の説明でホームページにはパスワード保護を施すことが出来るようになった はずです。しかしまだどうしても成功しないという人がいるかも知れません。 次の事をチェックしてみてください。 いずれの答えにも「はい」と答えられてそれでもパスワード保護できないなら 他に原因があるのでしょう。こちらで状況を確認できるならば原因を探ることも 出来るかもしれません。問い合わせ先にメールをください。

なかにはダイアログの表示は行われるがパスワードが通らないと言う人もいます。 多くの場合それはパスワードファイルの絶対パス指定を失敗している人々ばかりです。 環境変数を表示するCGIを置いておきますのでパスワード ファイルを置きたいディレクトリで実行して環境変数を表示して下さい。その中に 「SCRIPT_FILENAME :」と言う項目が出てきますのでそこをチェックします。 実はそこに表示されている値がそのCGIの実行場所(絶対パス)です。 パスワードファイルの位置指定にはこのディレクトリを用いて下さい。
Kouzzy's HomePage in SysChro へ戻る
問い合わせはこちらへ kouzzy@mocha.ocn.ne.jp
閲覧回数
実行回数