基本認証で認証された現在のユーザーを見つける (Apache)

基本認証で認証された現在のユーザーを見つける (Apache)

基本認証ページからログインする場合、認証したユーザー名はどこか(サーバーまたはクライアント マシン上)に保存されますか? 環境変数に保存される可能性がありますか?

背景: 電子メール サーバー用の共通の Web 管理ページがあり、誰が何をしているかを知りたいと考えています。ユーザーが基本認証で正常にログインしたときに、そのユーザーを識別してそのアクションをログに記録できるようにしたいと考えています。そのため、リクエストが送信されるたびに、ログ ファイルに書き込むことができます。基本的な形式は次のようになります。

$username ran a $function against $useraccount

たとえば、ユーザーが誰かの権限を変更した場合、次のようになります。

Admin-Bob ran a permission change against User-Scott

したがって、エラーが発生した場合、ログ ファイルで原因となったアクションを簡単に追跡できます。%ENVハッシュをチェックしてみましたが、効果はありませんでした。何かアイデアはありますか?

PHP のようなセッションには、あまり関わりたくありません。なぜなら、それはすでに十分な制御を与えてくれる基本認証を破棄することになるからです。セッションを使って何かをコーディングしなければならない場合、最大試行回数後にユーザーをブロックするシステムを実装する必要がありますが、これはコーディングしたくありません。これはプログラミング言語というよりは Apache に関係しているので、serverfault の方が適していると思います。セッションは無数の言語で行うことができます。

答え1

ユーザー名は環境変数で使用できますREMOTE_USER

これは、ダイジェスト認証や Kerberos 認証の使用を開始する場合でも、ほぼすべての認証方法で機能します。

答え2

Shtééf はすでに述べました$ENV{'REMOTE_USER'}が、CGI.pm を使用している場合は、関数によっても返されますremote_user()

my $cgi = CGI->new();
print $cgi->remote_user(); # Prints user name

答え3

実際には、これは環境ではなくサーバー変数です。

PHP_AUTH_USER と AUTH_USER はどちらも機能するはずです。

関連情報