从GWT servlet访问AJP请求数据

时间:2016-06-28 20:18:58

标签: apache tomcat gwt shibboleth mod-proxy-ajp

我正在尝试创建一个实现基于Shibboleth的授权的GWT应用程序。因为最终它应该在"生产模式"中服务,所以我选择使用Tomcat7运行应用程序,但是客户端连接到Apache2,然后Apache2通过AJP将请求转发到Tomcat(使用mod_proxy_ajp)。

为应用程序提供服务的基本任务有效。但是,我需要以某种方式访问​​Shibboleth设置的环境变量。根据{{​​3}},如果环境变量以AJP_为前缀(然后删除前缀),则环境变量将被转发到Tomcat,所以我继续并以这样的方式配置Shibboleth,它将该前缀添加到它设置的所有环境变量(这是有效的,因为我已经确认使用简单打印所有环境变量的PHP脚本)。

问题在于环境变量在到达Tomcat时不再作为环境变量可用,而是应该作为 AJP请求的the Shibboleth documentation短语 - 提供服务。属性

显然,应该使用

之类的东西来访问这些属性
getThreadLocalRequest().getSession().getAttribute("uid")

来自servlet。尽管我的PHP脚本列出了一个名为AJP_uid的环境变量,但是上面的调用会返回null,而根据我的理解,它应该返回与环境变量AJP_uid相同的值。

可以肯定的是,我还尝试使用AJP_uid代替uid进行上述调用,以防前缀由于某种原因而没有被删除,但没有运气。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

正如@ThomasBroyer所提到的,我也可以直接在getAttribute返回的HttpServletRequest对象上调用getThreadLocalRequest(),这对我来说确实有用:

getThreadLocalRequest().getAttribute("uid")

返回我预期的适当值。 谢谢!