我的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