我正在将 Shibbolethv2.3 与 Apache Web 服务器和 Tomcat 应用程序服务器一起使用。我使用 mod_proxy.so 将 Apache 用作反向代理。我无法将 Shibboleth 环境变量从 Apache 转发到 Tomcat。我能够转发标头中的属性,但正如 wiki 中已经提到的那样,这种方法并不安全。我尝试通过以下指令转发环境变量:
SetEnv AJP_username ${用户名}
然后在 Java 端我可以通过以下方式访问该属性:request.getAttribute("username"); 奇怪的是,我得到的值与 Shibboleth 设置的值不同。结果我得到的是 Windows 帐户名。如果我使用任何其他属性名称,我得到的是空值。
我搜索了很多,但已经没有其他选择了。请指导我找到正确的解决方案。
我的设置详情:
- Shibboleth 版本:2.3
- 操作系统:Windows XP SP3
- 网络服务器:Apache 2.2
- 应用服务器:Tomcat 6
- 代理模块: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