通过AJP将REMOTE_USER转发给tomcat(例如shibboleth)

SDw*_*rfs 5 apache authentication tomcat ajp shibboleth

今天我遇到了以下问题:1.我为基本身份验证配置了apache(需要有效用户); 哪个有效.2.我进一步配置了apache以将某些路径(在我的情况下为/ idp)的请求转发到tomcat servlet(shibboleth IDP).

结果是,shibboleth IdP(ECP配置文件)告诉我没有设置"REMOTE_USER"(它使用httpRequest.getRemoteUser()方法来检查它;它返回null).

我尝试了很多东西,比如SetEnv和RewriteRule,但没有成功.

解决方案很简单,但很难找到...所以我决定在这里发布它以帮助其他人解决这类问题.

关心斯特凡

SDw*_*rfs 12

好的,这是我的解决方案.我发现tomcat需要配置为信任/接受apache2所做的身份验证...

要做到这一点,你必须编辑的Tomcat的server.xml(应该是在/etc/tomcat6/server.xml或类似),并添加tomcatAuthentication="false"到您的<Connector>-Tag的AJP连接.我的Connector标签现在看起来像这样:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
   tomcatAuthentication="false" /> 
Run Code Online (Sandbox Code Playgroud)

现在你只需要重启tomcat ......就完了.

希望这可以帮助!;-)

斯特凡

说明:

"tomcatAuthentication" - "如果设置为true,则认证将在Tomcat中完成.否则,经过身份验证的主体将从本机Web服务器传播并用于Tomcat中的授权.默认值为true."

引用自:http://tomcat.apache.org/tomcat-5.5-doc/config/ajp.html