我正在尝试创建一个实现基于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
进行上述调用,以防前缀由于某种原因而没有被删除,但没有运气。
我做错了什么?
答案 0 :(得分:0)
正如@ThomasBroyer所提到的,我也可以直接在getAttribute
返回的HttpServletRequest
对象上调用getThreadLocalRequest()
,这对我来说确实有用:
getThreadLocalRequest().getAttribute("uid")
返回我预期的适当值。 谢谢!