如何在HTTP标头中设置REMOTE_USER?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在HTTP标头中设置REMOTE_USER?相关的知识,希望对你有一定的参考价值。
我的Apache设置有问题。
我安装了部分接受外部身份验证的Web应用程序:
- 我使用Apache来管理对我的应用程序网页的访问。
- 如果身份验证成功,则使用用户名设置环境变量REMOTE_USER。
- 然后通过HTTP标头将用户名传递给我的应用程序,以便在用户会话上打开应用程序。
- 这主要是应用程序的Apache配置。我只在我的应用程序配置文件中设置包含用户名的变量(HTTP标头)的名称。
这是问题:我可以成功进行身份验证(大多数情况下)但我的HTTP标头设置为null。
一些额外的细节:
- 我使用Apache和mod_perl模块(AuthenNIS + AuthzNIS + Net-NIS)通过NIS帐户向我的应用程序进行身份验证。
- 使用以下Apache配置文件,当我尝试访问我的应用程序但是REMOTE_USER标头设置为null时,我有身份验证表单。
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“username”,则应用程序将在相应的用户会话中打开。
要查看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
提前致谢 !
答案
请勿使用以下内容,因为如果REMOTE_USER设置为mod_authn_ntlm(ntlm与本地计算机,请参阅https://support.microsoft.com/en-us/kb/896861)等模块,则会遇到执行阶段的问题。
RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule . - [E=RU:%1]
RequestHeader set X-Remote-User %{RU}e
而是使用以下方法:
RequestHeader set X-Remote-User expr=%{REMOTE_USER}
还有一个mod_ssl的解决方案
RequestHeader set X-Remote-User %{REMOTE_USER}s
以上是关于如何在HTTP标头中设置REMOTE_USER?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Apache JClouds 中设置 HTTP 标头?