このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

環境変数を用いた認証システムについて

発言者:森
( Date Wednesday, August 09, 2000 10:41:16 )


こんにちは。以前に投稿させていただいたのですが、当方まだ問題を解決できずに困っております。どなたか、おわかりになるかたはいらっしゃいませんでしょうか?
以下、質問内容です。どうぞよろしくおねがいいたします。


初めて質問させていただきます。
基礎的な質問かもしれませんが、よろしくお願いいたします。
当方、webstar3.02の環境なのですが、
macperlのcgiで環境変数を用いた認証システムがうまく作動しません。

$ref=$ENV{'HTTP_REFERER'};
if ($ref eq 'http://aaa.co.jp/bbb.html'){
print "Content-Type: text/html\n\n";

という部分だとは思うのですが。
なにぶん、初心者なもので困っています。
ご教示いただければ幸いです。
よろしくお願いいたします。

田中求之 さんからのコメント
( Wednesday, August 09, 2000 14:22:45 )

認証を Referer で行う、つまち、特定のページからのアクセスしか認めない
ようにしたい、ということですね? いわゆる Web の認証とは別ですね?

この点を確認しておいて、お尋ねの件ですが、うまく動作しないという
のはどういうことでしょうか? 書かれているスクリプトでは、
特定のページからのアクセスの場合には Content-type ヘッダを返す
というものになっていますが、もちろん、この後に、ページの内容も
書いてあるのですよね?(ヘッダだけ返しても意味がありませんものね)

もうすこし、具体的に状況を教えてください。

さんからのコメント
( Wednesday, August 09, 2000 16:42:27 )

お忙しいところ、ご返事いただきありがとうございます。

>特定のページからのアクセスしか認めない
>ようにしたい、ということですね? いわゆる Web の認証とは別ですね?

そうです。

$ref=$ENV{'HTTP_REFERER'};
if ($ref eq 'http://aaa.co.jp/bbb.html'){
print "Content-Type: text/html\n\n";

でいうと http://aaa.co.jp/bbb.html を通ったということを認証のカギとするものにしたいと考えています。

print "Content-Type: text/html\n\n"; 
以下にももちろん表示させる内容を書いています。

WebStarにこのcgiスクリプトをおいたところ、うまく作動しないのですが、商業プロバイダーに上げてUNIXで作動させた場合には、問題なく返してくれました。

上記の例でいくと
http://aaa.co.jp/bbb.htmlを通った場合には
print以下が表示され、そうでない場合には

}else{
print "Location:http://ccc.co.jp/ddd.html\n";
}

とスクリプトの下の方に書いてあるのですが、その通りに http://ccc.co.jp/ddd.html に跳ね返されてしまいます。

同じことをWebStarの環境のもとでやると http://aaa.co.jp/bbb.html を通ったにもかかわらず、http://ccc.co.jp/ddd.htmlへと跳ね返されてしまい、認証されません。 http://aaa.co.jp/bbb.html を通ったことを確実に認証のカギとするにはどうしたら良いのかがわからずに困っています。

以上、説明不足で質問してしまい申し訳ありませんでした。
ぜひとも解決したい問題なので、よろしくお願いいたします。

田中求之 さんからのコメント
( Wednesday, August 09, 2000 17:06:49 )

WebSTAR も Referer の情報はちゃんと CGI に渡されます。

ですから、$ref=$ENV{'HTTP_REFERER'}; というスクリプトの部分で、
referer の情報を取得できていないことが問題を起こしているのだと
思いますが、MacPerl と WebSTAR のインターフェースの部分の問題
のような気がします。

MacPerl の CGI の環境変数って、UNIX などの場合と同じ名前でいいん
ですよね?> MacPerl ユーザーの方