在代理之前将apache中的REMOTE_USER设置为tomcat

时间:2015-03-31 17:05:47

标签: apache tomcat single-sign-on shibboleth

在向tomcat请求AJP代理请求之前,apache中是否有办法将REMOTE_USER设置为某个特定值的特定值?

我有一个SSO(Apache / mod_shib)-fronted tomcat应用程序。一些URL仍然需要公开访问。我为受保护的部分工作了shibboleth,但公共部分仍然需要用户名(不能改变应用程序的工作方式)。

我可以正确识别需要公开访问的网址,并为其关闭shibboleth身份验证。当我这样做时,现在没有用户定义,所以系统拒绝让我进入。

想想我想做的是:

IF URL matches pattern:
    turn off shibboleth
    force set REMOTE_USER="anonymous" //and maybe AJP_REMOTE_USER, too?!

我尝试使用FakeBasicAuth来实现最后一位,但用户似乎是在代理发生后设置的。有没有办法做到这一点?也许有更好的方法?

不太理想的替代方法是将tomcat应用程序配置为使用除REMOTE_USER之外的其他内容,然后尝试使用mod_rewrite设置该值。我宁愿不这样做,因为那时用户名不会出现在tomcat访问日志中。

2 个答案:

答案 0 :(得分:0)

操作REMOTE_USER env变量非常困难,如果你在连接的最开始有额外的约束,我会尝试mod_security

不幸的是,为mod_security编写规则并不是世界上最简单的事情。

答案 1 :(得分:0)

在身份验证后使用 REMOTE_USER 变量的内容填充标头 X-Remote-User 并将标头发送到后端代理的示例(apache 2.4.6)。

bot.DownloadFileAsync