• 締切済み

BASIC認証でユーザー名取得

こんにちは。 現在、BASIC認証を使用した簡易会員サイトを作っています。 誰がいつログイン?したか履歴を取りたくて、会員サイト内のhtmlファイルがアクセスされた際に、cgiファイルを起動し、履歴取得をする方法で考えていましたが、ユーザー名が空欄になってしまい、どうにもうまくいきません? 現在、会員サイト内の公表ファイルは、[home]以下に入っており、そこにhtaccessも配置しています。 cgiファイルは、[cgi-bin]以下でしか動作しないので、この中に配置しています。 何か良い方法があればご教授願います。 宜しくお願いします。

みんなの回答

回答No.4

> REMOTE_HOSTだけが空欄になってしまいます。 > ご指摘の通り、[home]と[cgi-bin]が別フォルダのため、取得出来ないのでしょうか? REMOTE_HOSTとBASIC認証は、まったく別件です。 多分、WebサーバーでのDNSへの問合せ負荷を軽減するために、 サーバー側の設定で ホスト名への逆引きを行っていないのでしょう。 (この場合、 REMOTE_ADDRのIPアドレスをそのままREMOTE_HOSTにコピーする仕様のサーバーと REMOTE_HOSTを空にするサーバーがあるようです) クライアントのホスト名が どうしても欲しいのであれば、CGI(perl)内で $addr = $ENV{'REMOTE_ADDR'}; $host = gethostbyaddr(pack('C4',split(/\./,$addr)),2) || $addr; のようにして、自力でIPアドレスからホスト名に逆引きするようにすれば解決するはずです。

taka_chanpe
質問者

お礼

おかげ様で、うまく取得出来ました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

> 現在、会員サイト内の公表ファイルは、[home]以下に入っており、そこにhtaccessも配置しています。 > cgiファイルは、[cgi-bin]以下でしか動作しないので、この中に配置しています。 多分、CGI内で $ENV{'REMOTE_USER'}を使ってBASIC認証のユーザー名を取り出そうとしてしても、 CGIを設置したcgi-binディレクトリでは BASIC認証をかけていないので、認証情報がないので 空になってしまうということでしょう。 対処方法はいろいろあるのでしょうけど、以下ではどうでしょう。 【案1】 .htaccessで Options +ExecCGI AddType text/html pl AddHandler cgi-script pl のような記述をすればcgi-binディレクトリ以外でもCGIが動かせるサーバーもあるので 会員用のhomeの.htaccessにこれを書いて、home下にCGIファイルを設置して試してみる。 【案2】 cgi-binにも.htaccessを設置してBASIC認証をかける (非会員用のCGIも混在しているなら、  BASIC認証を適応するファイルを .htaccessの<Files>で限定的にするとか  会員用CGIは、cgi-bin下にサブディレクトリ化するとか) 【案3】 cgi-bin/members といったサブディレクトリを作って、ここでBASIC認証をかけて この下に、会員用コンテンツやCGIを移動する。

taka_chanpe
質問者

補足

ご回答ありがとうございます。 案2を試した結果、REMOTE_USERとREMOTE_ADDRは取得出来るようになりましたが、REMOTE_HOSTだけが空欄になってしまいます。 ご指摘の通り、[home]と[cgi-bin]が別フォルダのため、取得出来ないのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • notnot
  • ベストアンサー率47% (4852/10266)
回答No.2

>ユーザー名が空欄になってしまい、どうにもうまくいきません? 具体的には何が空欄ですか? 環境変数 REMOTE_USER 、perlだと $ENV{"REMOTE_USER"} に入っていませんか?

taka_chanpe
質問者

補足

REMOTE_USERや、HTTP_HOST、HTTP_REFERER、REMOTE_ADDRを取得したいのですが、ユーザーは空欄になり、ホストは(http://aaa.com/)、アクセス元のURLは(http://aaa.com/member/)になってしまいます。

全文を見る
すると、全ての回答が全文表示されます。
  • heburusu
  • ベストアンサー率85% (140/164)
回答No.1

BASIC認証の情報はHTTPヘッダのAuthorizationに格納されますが、 デフォルトのApache設定では環境変数にセットされないようですね。 参考URLのように、.htaccessにRewriteRuleを記述してはどうでしょうか?

参考URL:
http://d.hatena.ne.jp/moroto1122/20140328/1395985640
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Basic認証ができません

    自宅サーバーを立てました。しかしBasic認証ができません。 httpdに以下のように記述しました。プロテクトフォルダーにアクセスすると認証画面は表示されますが、ユーザー名とパスワードを正しく入れても正しく認証されません。.htpasswdと.htaccessは設置してあります。他に何を設定すればいいのでしょうか? <Directory "C:\www\cgi-bin\protect\members"> AuthType Basic AuthName "会員専用" AuthUserFile C:\www\cgi-bin\protect\members.htpasswd Require valid-user </Directory>

  • 認証のみ出来るフリーCGI無いでしょうか?

    現在、cgi(perl)を使用して会員制HPを作っていますが、現段階はフリーのcgiを利用させて頂いたりして、会員登録・会員の条件検索まで出来ました。しかし、認証の部分出来ません。 現段階では、会員入口からリンクさせて検索ページに跳んでしまうので、会員登録の意味がありません。 現在「会員入口⇒検索ページ」と成っています。 これを「会員入口⇒認証画面⇒検索ページ」と云う形にしたいのですが、お奨めのフリーCGIスプリクトは無いでしょうか? 私自身で探しては見ましたが、大抵が会員登録・ID/PW発行などの機能も付いている物ばかりです。私はcgi初心者で改良出来る知識も自信も有りません。何度か試みはしましたが、結果、スプリクトを壊してしまい・・・(^^;ゝ 理想は、現在の会員登録の.datファイルもしくは、.csvファイルからID/PWを拾ってきて認証が出来るcgiスプリクトを探しています。(出来れば、PWのみの認証がいいです・・・) それから、もう一つ教えて頂きたいのですが、現段階の状況で、.datファイル.csvファイルに書き込みエラーが出てくるように成りました。今までは何も問題が有りませんでしたが・・・(TT) 「・・・ファイルを開けません・・・」と出てきます。なので、パーミッションを<666>から<606>等に変更して試みましたが、一緒でした。フォルダはdatフォルダで.dat .csvのファイルのみ入れています。 .htaccessファイルはpublic_htmlフォルダの直下に置いていまして、携帯のみ許可をしています。(.htaccessファイルを削除しての確認もしています) こんな私を助けて下さい!宜しくお願い致します。

    • 締切済み
    • CGI
  • 個人HPでのベーシック認証について

    こんばんは、さくらインターネットのレンタルサーバーにて個人(チーム)HPを開設しようとしています。サイト内メニューの1項目だけベーシック認証をかけたくて、htaccessを配置しようと試みたところ、「TELNET」接続を行い、IDとパスワード用のファイルを作成しなければいけないと判明しました。しかも、自分が入ったプランでは、対応していないようなのです(一つ上のプランからということです)。これというのは、例えばCGIで認証かけるにしても、プランを変えないとできないということでしょうか?もし、そうでしたら他の方法で認証をかける方法などありますか?過去ログにはFlashとかJavaとかありましたが・・・皆様の知恵をお貸しください、お願いいたします。

  • CGIの掲示板に基本(BASIC)認証をかけたい

     へたれ自宅サーバ管理者です。  CGIのBBS(掲示板)に基本認証でアクセス制限をかけたいのですが、うまくいかず困っています。  もしかして、そもそもCGIのBBSに認証をかけること自体、できないのでしょうか?どなたか、ご存じの方、お助けください。  現在の設定は次の通りです。 ・サーバ Apache ・掲示板 YY-BOAD  ?http://www.kent-web.com/bbs/yybbs.html? ・上記CGIを置いているディレクトリ(/home/test/cgi-bin/yybbs」に「.htaccess」を作成して設置。 ・「.htaccess」の内容  <Limit GET>  AuthUserFile "/home/test/.htpasswd1"  AuthName "Welcome"  AuthType Basic  require user testid  </Limit> ・/home/test/に.htpasswd1を設置。 ・「.htpasswd1」の内容  testid:jkfdshkfjdhsfd  以上

  • Basic認証がindex.htmlにもかかる

    サイトを作成してアップしました。index.htmlより下層のファイルにはBasic認証をかけたくて、.htaccessを下層のフォルダにいれました。 しかし、なぜか、index.htmlにもBasic認証がかかってしまいます。 しかも、そこでキャンセルすれば、エラーページに飛ばされることなく、indexが表示されます。ただ、画像は表示されません。 下層のファイルに飛ぼうとすると、きちんとしたBasic認証がちゃんとかかります。 いろんな方法を試してみましたが、この現象が解消されません。 ちなみに、現在の.htaccessは以下の通りです。 <Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> AuthUserFile /home/○○○/○○○/○○○/.htpasswd AuthGroupFile /dev/null AuthName "Please enter your ID and password" AuthType Basic require valid-user order deny,allow 本にもどこにも載っていないし、ネットで探しても答えがありません。 困っています。 原因はなんでしょうか。また、この現象を回避する方法はないでしょうか。 どうかよろしくお願いします。

  • Basic認証がindex.htmlにもかかる

    サイトを作成してアップしました。index.htmlより下層のファイルにはBasic認証をかけたくて、.htaccessを下層のフォルダにいれました。 しかし、なぜか、index.htmlにもBasic認証がかかってしまいます。 しかも、そこでキャンセルすれば、エラーページに飛ばされることなく、indexが表示されます。ただ、画像は表示されません。 下層のファイルに飛ぼうとすると、きちんとしたBasic認証がちゃんとかかります。 いろんな方法を試してみましたが、この現象が解消されません。 ちなみに、現在の.htaccessは以下の通りです。 <Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> AuthUserFile /home/○○○/○○○/○○○/.htpasswd AuthGroupFile /dev/null AuthName "Please enter your ID and password" AuthType Basic require valid-user order deny,allow 本にもどこにも載っていないし、ネットで探しても答えがありません。 困っています。 原因はなんでしょうか。また、この現象を回避する方法はないでしょうか。 どうかよろしくお願いします。

  • BASIC認証の設定についてです

    BASIC認証のアクセス制限をかけようとして設定をしましたがどうもうまくいきません。 設定し終わった自分のサイトでユーザー名、パスワードを入れても入れず、3回ぐらい繰り返すと「Authorization Required」というエラーが出てしまいます。 .htaccessや.htpasswdは下記のサイトで作りました。 http://www.avis.ne.jp/avis-cgi/htpasswd.cgi そしてアップ前にテキストファイルから.htaccessに変換してあります。 アドバイスよろしくお願いします。

  • ベーシック認証前にIDとパスワードを知らせる方法は?

    いわゆる会員向けの認証ではなく、ロボットを遮断する手段としてベーシック認証を使っています。 IDとパスワードは画像によって提供しています。 認証に失敗したときは、401エラーの代替ドキュメントの中でIDとパスワードを告知するこは出来ますが、認証前にできないでしょうか? と言う質問です。 例えば、 /home/hoge/hogehoge/nantoka/index.html /home/hoge/hogehoge/kantoka/index.html /home/hoge/hogehoge/dondoko/index.html というサイトがあったとして、 .htaccessをhogehogeディレクトリに、 パスワードを記した、各index.htmlに対応する告知ファイル(この中で各index.htmlにリンクを張る)、をhomeディレクトリに置くことで事前に見せることは可能ですが、 これだと外部からリンクを張って貰うときにそのことを告知しなければ ならなくなるし、ファイルも多くなり、とても実用に耐えるものでは ありません。 なにかヨイ方法はないでしょうか?

  • 「CGI+Flash」の「BASIC認証パスワード制限システム(01)

    「CGI+Flash」の「BASIC認証パスワード制限システム(01)」に関して質問です。 配布CGIをダウンロード後、設定などを行っていた時の事なのですが、 「member」のフォルダ内に「.htaccess」のファイルが実在していませんでした。 あと、「.htaccess」のファイルだけで完成の所でした。 「.htaccess」のファイルだけは、自分で作成しないといけないのでしょうか? もし、自分で作成しないといけないなら、書き方などを教えて頂けませんでしょうか? また、配布されているのであれば、教えて頂けませんでしょうか? 書き方やどのように「BASIC認証パスワード制限システム(01)」のCGIと繋げれば良いのかが分かりません。 具体的に教えて頂ければ嬉しいです...

    • 締切済み
    • CGI
  • .htaccesでのユーザ認証

    OS:Redhat9.0、apache+tomcatの環境で特定のディレクトリにベーシック認証をかけたいと思い、試していますがうまくいきません。 1.「.htaccess」ファイルの作成 認証を行いたいディレクトリの直下(/usr/local/tomcat/webapps/admin)に作成しました。 AuthType Basic AuthName "Authentication_Directiory" AuthUserFile /usr/local/tomcat/webapps/admin/.htpasswd Require valid-user 2.パスワードファイルの作成 /usr/local/apache/bin/htpasswd -c /usr/local/tomcat/webapps/admin guest 上記の手順でやりましたが認証画面が出てきません。 apache+tomcatだと設定が違うのでしょうか。