嵌套HTTP基本身份验证?

时间:2012-01-05 11:54:36

标签: apache http authorization reverse-proxy

有没有办法在REST API前面使用http基本身份验证的反向代理,它也使用带有不同用户名和密码的http基本身份验证?

反向代理是Apache,如果重要的话。

最明显的解决方案似乎是让应用程序和代理使用不同的标头进行身份验证。

1)例如,我可以向代理发送请求,如:

GET /foo/1 HTTP/1.1
Authorization: proxyuserpasshere
X-Passthru-Authorization: restuserpasshere

然后代理将使用“Authorization”标头并且(如果它有效)将请求传递给底层Web应用程序,如:

GET /foo/1 HTTP/1.1
Authorization: restuserpasshere

(其中'restuserpasshere'值来自'X-Passthru-Authorization'标题)

有没有办法配置Apache来使其工作?

2)相反,我可以为代理使用标准的“Authorization”标头,并使用自定义标头进行应用程序的身份验证。所以请求看起来像:

GET /foo/1 HTTP/1.1
Authorization: proxyuserpasshere
X-Myapp-Authorization: restuserpasshere

这样做的一个缺点是,我的应用现在已硬编码,使用“X-Myapp-Authorization”标头而不是标准Authorization标头。

有更好的解决方法吗?

1 个答案:

答案 0 :(得分:2)

未经测试,但我会尝试类似:

RequestHeader set Authorization %{HTTP:X-Passthru-Authorization}

我不知道是否允许%{HTTP:x-HEADER}语法。您可能必须使用环境变量。

请参阅:

http://httpd.apache.org/docs/2.2/mod/mod_headers.html

http://php.dzone.com/news/inserting-variable-headers-apa