- 締切済み
ApacheのBasic認証のログの取り方
質問させて頂きます。 現在ホームページを作成しているのですが、 ホームページ内のあるページにアクセスする際にBasic認証をかけ、 こちらが発行するIDとパスワードを持っている人しかページを表示できないようにしたいと考えています。 そして、認証したときは時刻、ID、リモートアドレス等の情報のログを取りたいのですが、ログを取るには何が必要でしょうか? スクリプトとか必要なのでしょうか? はじめてBasic認証をやるので何もわからない状態です。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10357)
>私の管理しているページの認証についてだけ、別のファイルにログをとることはできないでしょうか? >指定した場所に他のログとは別にして自分のページが置いてあるディレクトリの.htaccessが認証したログのみ 検索もいいですが、マニュアルをまず読みましょう。 http://httpd.apache.org/docs/2.2/ja/ の「ログファイル」の部分。 ユーザがfooの場合というのを、下記で出来るかと思ったのですが、 SetEnvIf Remote_User "^foo$" mylog CustomLog logs/my_auth_log combined env=mylog 駄目でした。Remote_Userというのを認識してくれないみたい。(Apache2.2) URLで範囲を絞ってと言うことでいいなら、これで出来ます。 SetEnvIf Request_URI "^/mydir/" mylog CustomLog logs/my_auth_log combined env=mylog
- notnot
- ベストアンサー率47% (4900/10357)
認証要求が出る元になったアクセスは、401 という応答をブラウザに返し、401というコードでaccess_logに載ります。 例: 10.1.1.1 - - [19/Feb/2010:12:34:00 +0900] "GET /text.txt HTTP/1.1" 401 1111 "-" "ブラウザ情報" この401という応答ステータスを受け取ったブラウザは、認証ダイアログを出します。 認証後のアクセスが普通にaccess_logに出ますが、そこにユーザ名が載ります(標準的な設定の場合)。 例: 10.1.1.1 - hashi2246 [19/Feb/2010:12:34:56 +0900] "GET /text.txt HTTP/1.1" 200 1111 "-" "ブラウザ情報" したがって、何時認証されたかを知りたければ、401の次の、同じリクエスト内容で、ユーザ名が載ったログの時刻を見ればいいです。 実際にやってみて、access_log を見るのがわかりやすいです。
- temtecomai2
- ベストアンサー率61% (656/1071)
私も Apache は使ったことがないので何もわけわからない状態です。 なので Google で検索してみました。 http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=apache+basic%E8%AA%8D%E8%A8%BC+%E3%83%AD%E3%82%B0&num=50 上から 3件目ぐらいに試してみる価値がありそうな記事がありました。 http://q.hatena.ne.jp/1243208794 10分もかからず辿り着きましたので、質問者さんは既にお試し済みで、これでは実現できなかったというのならごめんなさい。 調べてなかったのなら調べてみる癖をつけてないと、この先やっていけなくなりますよ。
補足
回答ありがとうございました。 自分なりに検索してみたのですが、紹介して頂いたページは 見ていませんでした。ありがとうございます。 customlogを利用すれば何とかできそうな感じがしますが、 初心者のため、customlogなどの設定をどこに書き込めば良いのか わかりません。 可能であればログファイルの記録場所も指定したいのですが、 良い方法はあるでしょうか?
補足
回答ありがとうございます。 acccess.logを見てみました。 そこで追加質問なのですが、私の管理しているページの 認証についてだけ、別のファイルにログをとることは できないでしょうか? 指定した場所に他のログとは別にして自分のページが置いてある ディレクトリの.htaccessが認証したログのみ 記録したものが作成したいのです。 可能でしょうか?