WebサーバーのBasic認証とインターネットプロバイダー

本日、知人から、制作中のホームページにパスワード設定して、公開可能になるまではパスワードを入力しないとサイトを表示できないようにしたいと連絡が届きました。知人本人は文献を見ながらやってみたものの、うまくゆかないとのことでした。ユーザー名とパスワードを入力するためのウィンドウは表示されるものの、情報を入力しても入力ミスと判断されて、再度同じ入力ウィンドウが表示されるのが延々と繰り返されるとのこと。

Apache Webサーバーで認証が必要なページを準備するには、.htaccess と .htpasswd(設定でファイル名は変更可能)を準備し、.htaccess の方に認証のためのディレクティブとパスワードファイルを記述し、ユーザー名とログインするための暗号化したパスワードを .htpasswd ファイルに書いて、Webサーバーの所定の位置にputすれば終了のはず。インターネット上には親切な情報がたくさんあるので、それを見て設定すれば特に難しいことはないはず。

それがうまく行かないということで、.htaccess ファイルを確認したところ、

AuthUserFile /public_html/www/.htpasswd

となっているではありませんか。おいおい。アカウント名がパスに含まれていないではないですか。
共有レンタルサーバーでは、他利用者とサーバーを共有するので、必ず絶対パスでアカウント名が含まれるはず。それが書かれていませんから、Apacheが .htpasswd ファイルを見つけられなくてログインが失敗するようです。

知人に連絡して、ftp でログインした後、pwd コマンドで絶対パスが表示できないか確認してもらいましたが、/public_html と表示されるだけということ。共有サーバーだから、ftp した場合、chroot しているのかも。
やむなく、Apache のアクセスログとエラーログを見てもらい、その中に表示されるパスとエラーメッセージを見てもらおうとしたら、そのISPにはアクセスログを見るサービスが無いとのこと。

私自身が、そのプロバイダーのサポートページを探してみましたけど、Basic認証を使用する方法やら、ディレクティブ記述のサンプルなどは一切無し。Webページへのアクセスログも見ることが出来ません。

なに、このインターネットプロバイダー!使いものにならないじゃん。

面倒ですが、Webページの絶対パスを表示するためのCGIを書いてチェックすることにしました。書くというよりも、perl CGI 中にUnixコマンドを書く方法を紹介してあるページから、殆どコピーさせてもらっただけですが。

#!/usr/local/bin/perl
$command = `pwd`;
print "Content-type: text/html\n\n";
print "<HTML><HEAD><TITLE>Results</TITLE></HEAD>\n";
print "<BODY BGCOLOR=\"#ffffff\">\n";
print "$command\n";
print "</BODY></HTML>\n";

これをWebサーバーにコピーして、実行権を与えてアクセスしたところ、

/home/user_name/public_html

って出てきましたよ。この情報を元に .htaccess 内の記述を書き替えて一件落着、、、になるはずでしたが、まだ認証が通らない。

.htpasswd を開いてみたところ、やたらとパスワードが短い!どうもWebサーバーが対応していない暗号化おこなうツールを利用してしまったようです。手元の htpasswd コマンドでパスワードファイルを作り直して、Webサーバーに置いた後、再度確認してみると、今度は成功。パスワードファイルも壊れていたと判断されていたようです。
ちなみにMacOSには htpasswd コマンドが標準インストールされていました(snow leopardで存在確認。)から、Macを使えば .htpasswd ファイルの作成は簡単です。

しかしね~、「インターネットサービスプロバイダーの姿勢として、このサイトの情報提供姿勢ってどうなのよ」と感じました。個人向けサービスだけなら、Webページのアクセスログを出さない、Webページの絶対パスを公開しない、.htpasswd 更新ツールを提供していないなど、あまりにも対応がひどくないでしょうか。もし、会員しかアクセスできないページに書かれているとしても問題だと思います。

ビジネスユーザーがどこかのプロバイダーにWebサービスを提供するためのサーバーを借りようとした場合、当然会員専用ページを準備するでしょうし、自社ページへのアクセス状況を知るためにアクセスログを見たいと思うでしょう。それが出来ないということです。今の時代なら、google analytics を使うなどしてある程度のアクセス状況をアクセスログに頼らず知ることも出来ますが、リンク切れエラーや、Internal error  などの問題発生を知ることが出来ません。

ここら辺の情報開示が十分なされている、私が知っているおすすめプロバイダーは、NTTPCのWebARENA SuiteX サービス。ビジネスユーザーが設定に最低限必要な必要なことことが事前に把握できます。月極料金も割と低価格でSOHO規模のビジネスには、これはいいサービスです。

コメントを残す