我正在尝试使用 Apache 的 OpenID 身份验证模块。根据这一页,我应该能够使用REMOTE_USER
Apache 变量来识别用户。我想将其作为标头传递给上游应用程序(我使用 Apache 进行身份验证和反向代理)。
我的 Apache 站点配置如下:
<VirtualHost *:80>
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
<Location />
AuthType OpenID
require valid-user
AuthOpenIDAXRequire email http://axschema.org/contact/email @muller\.io$
AuthOpenIDAXUsername email
RequestHeader set x-username $REMOTE_USER
</Location>
</VirtualHost>
我搜索了好久,但最多只能找到如何在这种上下文中使用环境变量。我已验证硬编码字符串是否有效(实际上,上述代码将字符串传递"$REMOTE_USER"
给了我的应用程序)。
如果mod_auth_openid
设置REMOTE_USER
变量在 Apache 中那么我怎样才能将其上游传递到我的应用程序?
答案1
经过进一步挖掘,我发现这一页使用以下代码:
RewriteEngine On
RewriteCond %{REMOTE_USER} (.+)
RewriteRule . - [E=RU:%1]
RequestHeader set REMOTE_USER %{RU}e
这是帮我解决问题的灵丹妙药。我读了一些页面,它们表明这可能不正确(而且确实看起来很笨拙),所以请随意推荐一些更好的东西。