我们使用 shibboleth 进行身份验证。我们的 shibboleth 服务提供商在运行具有反向代理配置 (mod_proxy) 的 apache 的主机上运行。使用 shibboleth 的应用程序在后端运行,这些服务器上未安装 SP。我们在后端服务器上获取所有 shibboleth 标头。
现在我需要由代理服务器上的 shibboleth 身份验证填充的 REMOTE_USER 变量在后端服务器上可用。我已设法将值放入 HTTP_REMOTE_USER 并将其传递到后端服务器,但我很难将此值放入后端服务器上的 REMOTE_USER。
我想知道 HTTP_REMOTE_USER 和 REMOTE_USER 之间有什么区别,以及如何从 apache 配置中操作 REMOTE_USER 而不进行实际身份验证。
答案1
我想用 shibboleth 做和你一样的事情。但不幸的是,我在相应的 apache 文档。REMOTE_USER 是 CGI 标准的一部分,因此不能使用 apache 指令进行修改。
无法使用环境操作指令覆盖或更改标准 CGI 变量。
答案2
您可以在发送到后端服务器的查询字符串上发送 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)子请求以确定变量的最终值的预读。这可用于访问当前阶段不可用但将在稍后阶段设置的变量以进行重写。
例如,要根据每个服务器上下文(httpd.conf 文件)中的 REMOTE_USER 变量进行重写,您必须使用 %{LA-U:REMOTE_USER} - 此变量由授权阶段设置,该阶段位于 URL 翻译阶段之后(mod_rewrite 在此期间运行)。