尋找透過基本驗證(Apache)進行身份驗證的目前用戶

尋找透過基本驗證(Apache)進行身份驗證的目前用戶

當您透過基本驗證頁面登入時,您經過驗證的使用者名稱是否儲存在任何地方(在伺服器或用戶端電腦上),也許在環境變數中?

背景:我有一個電子郵件伺服器的通用 Web 管理頁面,我想知道誰在做什麼。當使用者透過基本身份驗證成功登入時,我希望能夠識別他們並記錄他們的操作。因此,每次提交請求時,我都可以寫入日誌檔案。基本格式為:

$username ran a $function against $useraccount

因此,如果使用者更改了某人的權限,例如:

Admin-Bob ran a permission change against User-Scott

因此,如果發生錯誤,我可以輕鬆地在日誌檔案中追溯到哪些操作導致了原因。我嘗試檢查%ENV哈希值但無濟於事,有什麼想法嗎?

我真的不想進入類似 PHP 的會話,因為這意味著放棄我的基本身份驗證,這已經給了我很好的控制權。如果我必須使用會話編寫某些內容,我需要實作一個系統來在最大嘗試次數後阻止使用者等等,而我真的不想寫這些程式碼。我認為這更適合伺服器故障,因為它比程式語言更適合 Apache。會議可以用多種語言進行。

答案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 應該都可以工作。

相關內容