通过 Apache 将 Shibboleth 环境变量转发到 Tomcat

通过 Apache 将 Shibboleth 环境变量转发到 Tomcat

我正在将 Shibbolethv2.3 与 Apache Web 服务器和 Tomcat 应用程序服务器一起使用。我使用 mod_proxy.so 将 Apache 用作反向代理。我无法将 Shibboleth 环境变量从 Apache 转发到 Tomcat。我能够转发标头中的属性,但正如 wiki 中已经提到的那样,这种方法并不安全。我尝试通过以下指令转发环境变量:

SetEnv AJP_username ${用户名}

然后在 Java 端我可以通过以下方式访问该属性:request.getAttribute("username"); 奇怪的是,我得到的值与 Shibboleth 设置的值不同。结果我得到的是 Windows 帐户名。如果我使用任何其他属性名称,我得到的是空值。

我搜索了很多,但已经没有其他选择了。请指导我找到正确的解决方案。

我的设置详情:

  1. Shibboleth 版本:2.3
  2. 操作系统:Windows XP SP3
  3. 网络服务器:Apache 2.2
  4. 应用服务器:Tomcat 6
  5. 代理模块:mod_proxy.so

答案1

确保您通过 httpd.conf 中的 ajp 进行代理

ProxyPass /example ajp://example.org/example

在 shibboleth2.xml 的 ApplicationDefaults 部分中,我们需要添加

attributePrefix="AJP_"

所以它看起来像

<ApplicationDefaults id="default" policyId="default"
    entityID="https://idp.example.org"
    REMOTE_USER="eppn persistent-id targeted-id"
    signing="false" encryption="false" attributePrefix="AJP_">

在 shib 邮件列表中查看这个问题: http://groups.google.com/group/shibboleth-users/browse_thread/thread/2bdd3e272baf49a2?pli=1

相关内容