apache – 嵌套的HTTP基本身份验证?

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

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

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

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

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

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

GET /foo/1 HTTP/1.1
Authorization: restuserpasshere

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

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

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

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

这样做的缺点是我的应用程序现在硬编码使用“X-Myapp-Authorization”标头而不是标准的Authorization标头.

这有更好的方法吗?

最佳答案 没有测试,但我会尝试类似的东西:

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

点赞