【发布时间】:2016-06-28 20:18:57
【问题描述】:
我正在尝试创建一个实现基于 Shibboleth 的授权的 GWT 应用程序。因为最终它应该以“生产模式”提供服务,所以我选择使用 Tomcat7 运行应用程序,但是客户端连接到 Apache2,然后通过 AJP 将请求转发给 Tomcat(使用mod_proxy_ajp)。
服务于应用程序的基本任务有效。但是,我需要以某种方式访问 Shibboleth 设置的环境变量。根据the Shibboleth documentation,如果环境变量以AJP_ 为前缀(然后删除前缀),则环境变量将被转发到Tomcat,因此我继续配置Shibboleth,使其将该前缀添加到所有环境变量中它设置(这有效,因为我已经确认使用简单打印所有环境变量的 PHP 脚本)。
问题在于,当环境变量到达 Tomcat 时,它们不再可用作环境变量,而是应该被提供——正如mod_proxy_ajp documentation 所说的那样——作为 AJP 请求属性.
显然,这些类型的属性应该使用类似的东西来访问
getThreadLocalRequest().getSession().getAttribute("uid")
来自 servlet。尽管我的 PHP 脚本列出了一个名为 AJP_uid 的环境变量,但上面的调用返回 null 而据我了解,它应该返回与环境变量 AJP_uid 相同的值。
可以肯定的是,我还尝试使用AJP_uid 而不是uid 进行上述调用,以防前缀由于某种原因没有被删除,但没有运气。
我做错了什么?
【问题讨论】:
-
您是否尝试过直接在请求而不是会话上调用 getAttribute?
-
@ThomasBroyer 我没有,现在我有了,它完美地工作。非常感谢!现在,我该如何在不剥夺您的信用的情况下将此问题标记为已回答?
-
哦,我不在乎,只要接受你自己的答案。
标签: apache tomcat gwt shibboleth mod-proxy-ajp