我有一个配置了Windows身份验证和URL重写的IIS实例,因此它基本上可以充当反向代理。我的后端服务器(在Linux上运行)期望REMOTE_USER
标头。是否可以配置IIS将关于已认证用户的信息传递给后端服务器?
我有一个配置了Windows身份验证和URL重写的IIS实例,因此它基本上可以充当反向代理。我的后端服务器(在Linux上运行)期望REMOTE_USER
标头。是否可以配置IIS将关于已认证用户的信息传递给后端服务器?
<rule name="Reverse Proxy to MySite" stopProcessing="true">
<match url="^MySite/(.*)" />
<serverVariables>
<set name="HTTP_X_MY_HEADER" value="{LOCAL_ADDR}" />
</serverVariables>
<action type="Rewrite" url="http://www.myothersite.com/{R:1}" />
</rule>
REMOTE_USER
标头。这是因为当存在Authorization
标头时,在身份验证模块运行之前就会转发请求,因此身份验证服务器变量未设置(当映射到标头时,它们只是空白)。Basic Windows Auth
,然后从Linux服务器上的Base64
编码的Authorization
标头中提取用户名。REMOTE_USER
变量并重写请求,使得添加一个新的HTTP头,并将 REMOTE_USER
作为其值。当然,只有当您对后端服务器有一定控制权时才有所帮助,以便您可以利用该自定义标头的值而不是原始的 REMOTE_USER
变量。
在 ISAPI-Rewrite 的全局配置文件 (httpd.conf
) 中需要加入以下代码:
RewriteBase /
RewriteCond %{REQUEST_URI} ^/MySite.*
RewriteHeader X-Remote-User: .* %{REMOTE_USER}
RewriteCond
部分将此规则限制为以/MySite
开头的URI;如有需要,请随意进行调整。