web-dev-qa-db-ja.com

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

基本認証ページからログインするとき、認証したユーザー名はどこかに(サーバーまたはクライアントマシン上で)保存されていますか?おそらく環境変数に保存されていますか?

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

$username ran a $function against $useraccount

したがって、ユーザーが誰かの権限を変更した場合、例:

Admin-Bob ran a permission change against User-Scott

したがって、エラーが発生した場合、ログファイルでどのアクションが原因につながるかを簡単にさかのぼることができます。 %ENVハッシュをチェックしてみましたが、役に立ちませんでした。アイデアはありますか?

PHPのようなセッションには参加したくありません。これは、基本認証を破棄することを意味し、すでに高度な制御が可能になるためです。セッションで何かをコーディングする必要がある場合は、最大試行回数などの後にユーザーをブロックするシステムを実装する必要がありますが、実際にはコーディングしたくありません。これはプログラミング言語よりもApacheに関係しているため、serverfaultに適していると思います。セッションは無数の言語で行うことができます。

5
RHELAdmin

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

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

8
Shtééf

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

_my $cgi = CGI->new();
print $cgi->remote_user(); # Prints user name
_
3
Powerlord

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

PHP_AUTH_USERとAUTH_USERの両方が機能するはずです。

0
grufftech