我的Apache設置有問題。如何在HTTP頭中設置REMOTE_USER?
我安裝的部分是接受外部身份驗證的Web應用程序:
- 我使用Apache管理訪問我的應用程序的網頁。
- 如果認證成功,則使用用戶名設置環境變量REMOTE_USER。
- 然後通過HTTP標頭將用戶名傳遞給我的應用程序,以便應用程序在用戶會話中打開。
- 這主要是應用程序的Apache配置。我只在應用程序配置文件中設置了包含用戶名的變量(HTTP標頭)的名稱。
這是問題:我可以驗證成功(大部分時間),但我的HTTP標頭設置爲空。
一些額外的細節:
- 我使用Apache和mod_perl的模塊(AuthenNIS + AuthzNIS +淨-NIS)來驗證我的NIS帳戶的應用程序。
使用以下Apache配置文件當我嘗試訪問我的應用程序但REMOTE_USER標頭設置爲空時,我有身份驗證表單。
Listen 2208 <VirtualHost *:2208> RewriteEngine on DocumentRoot "/path/to/static" <Directory "/path/to/static"> Options +Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all AuthType Basic AuthName "Authentifiez vous" PerlAuthenHandler Apache2::AuthenNIS PerlAuthzHandler Apache2::AuthzNIS PerlSetVar AllowAlternateAuth no require valid-user </Directory> RewriteEngine on RewriteRule . - [E=RU:%{LA-U:REMOTE_USER}] RequestHeader set REMOTE_USER %{RU}e RewriteRule ^/apps$ /apps/ [R] RewriteRule ^/static/style/(.*) /path/to/static/june_2007_style/blue/$1 [L] RewriteRule ^/static/scripts/(.*) /path/to/static/scripts/packed/$1 [L] RewriteRule ^/static/(.*) /path/to/static/$1 [L] RewriteRule ^/favicon.ico /path/to/static/favicon.ico [L] RewriteRule ^/robots.txt /path/to/static/robots.txt [L] RewriteRule ^(.*) http://localhost:2209$1 [P] </VirtualHost>
如果我設置RequestHeader設置REMOTE_USER「用戶名」的應用程序打開上相應的用戶會話。
要查看REMOTE_USER的值我使用Firebug Firefox模塊顯示http頭的值+我的應用程序有一個腳本,顯示傳遞給它的變量的值。
我在一個index.php頁面上測試了一個幾乎完全相同的Apache配置,該頁面顯示了http請求中服務器變量的值。區別在於RewriteRules。
<?PHP
foreach($_SERVER as $key_name => $key_value) {
print $key_name . " = " . $key_value . "<br>";
}
?>
在這種情況下,我得到一個REMOTE_USER和HTTP_REMOTE_USER用戶名值。
我不明白我的問題在哪裏。
的Apache 2.2.31 的RedHat 6.5
在此先感謝!
這是Apache 2.4的正確答案的解決方案。舊式(RewriteCond等)僅適用於2.2。 – Jake
RequestHeader對我來說也適用於2.4! RewriteRule打破了Web服務之間的後續請求,我得到了遞歸錯誤!這是正確的答案。 – koullislp
非ssl版本,'RequestHeader set X-Remote-User expr =%{REMOTE_USER}'只適用於Apache 2.4.10+。 – howinator