Apache代理:将REMOTE_USER传递到后端服务器

我们正在使用shibboleth进行身份validation。 我们的shibboleth服务提供者正在运行带有反向代理configuration(mod_proxy)的apache的主机上运行。 使用shibboleth的应用程序在后端运行,这些服务器上没有安装SP。 我们在后端服务器上获取所有shibboleth头文件。

现在我需要代理服务器上的shibbolethvalidation所填充的REMOTE_USERvariables在后端服务器上可用。 我已经设法得到HTTP_REMOTE_USER的价值,并将其传递到后端服务器,但我努力把这个值到后端服务器上的REMOTE_USER。

我想知道HTTP_REMOTE_USER和REMOTE_USER之间有什么区别,以及如何在不进行实际身份validation的情况下从apacheconfiguration操作REMOTE_USER。

我想用shibboleth来完成和你一样的工作。 但不幸的是,我发现这在相应的Apache文档上 。 REMOTE_USER是CGI标准的一部分,因此不能用apache指令修改。

使用环境操作指令覆盖或更改标准CGIvariables是不可能的。

您可以将发送到后端服务器的查询string发送REMOTE_USER的值:

RewriteCond %{LA-U:REMOTE_USER} (.*) RewriteRule ^/test.asp(.*) test.asp?userid=%{LA-U:REMOTE_USER} [QSA,P,L] 

LA-U意味着前瞻性。 从mod_rewrite手册 :

%{LA-U:variable}可用于执行内部(基于URL)的子请求的前瞻,以确定variables的最终值。 这可以用来访问在当前阶段不可用的重写variables,但是将在稍后的阶段被设置。

例如,要根据每个服务器上下文(httpd.conf文件)中的REMOTE_USERvariables进行重写,您必须使用%{LA-U:REMOTE_USER} – 此variables由授权阶段设置,后者位于URL转换之后阶段(在这期间mod_rewrite操作)。