【问题标题】:Accessing AJP request data from a GWT servlet从 GWT servlet 访问 AJP 请求数据
【发布时间】: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


【解决方案1】:

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

getThreadLocalRequest().getAttribute("uid")

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-14
    • 2013-08-30
    • 2018-02-01
    • 2012-07-25
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多