Apache 作为身份验证代理

Apache 作为身份验证代理

我们正在尝试从 Apache httpd 实现身份验证代理。这应该可以保护使用基本身份验证的应用程序,但用户应该使用 httpd 的身份验证(在我们的例子中是 mod_auth_cas)进行身份验证。

我可以添加具有适当授权值的 RequestHeader,以将凭据发送到应用程序,但它是静态的,只有一个经过身份验证的用户。

是否有某种方法可以使用脚本设置 RequestHeader 值?或者有其他方法来构建此类身份验证代理?

我已经在考虑使用 cgi 脚本来处理代理功能。但在我看来,这就像一条通往地狱之路。

答案1

这几乎是一个解决方案:

RewriteEngine on

# Create a RewriteMap to do base64 encoding:
RewriteMap base64map "prg:/usr/bin/base64"

# Put the base64-encoded user:password string into an environment variable:
RewriteRule .* - [E=AUTHN:${base64map:%{LA-U:REMOTE_USER}:%{LA-U:REMOTE_PASS}},NE]  

# Put the encoded user:password string into the Authorization header:
RequestHeader Authorization "Basic %{AUTHN}e"

(见mod_rewrite 文档以解释为什么LA-U需要。

但缺少一件事:用户的密码。在上面,我使用了 REMOTE_PASS 环境变量,好像它会被设置,但通常没有这样的变量。

您必须以某种方式让 mod_auth_cas 将用户密码放入环境变量(例如 REMOTE_PASS)中,或者从请求标头中获取密码。如果没有用户密码,您就没有足够的信息来设置授权标头。

相关内容