我在Tomcat服务器中部署了一个webapp,前面有Apache。其中一个要求是,必须使用两个不同的路径访问webapp。例如:
http://domain.com/aa/bb/v1/*
and
http://domain.com/cc/v1/*
我的webapp配置了第一个URL,因此Tomcat正确处理了对/ aa / bb / v1 / *的任何请求。
然后,能够"转发"调用第二个URL到第一个URL,我在apache中使用了mod_rewrite,如下所示:
RewriteEngine on
RewriteRule /aa/bb/v1/(.+) cc/v1/$1 [NC,L,P]
这很好用!除非我在Tomcat中激活摘要式身份验证。在摘要中,浏览器发送的密码是一些或多或少复杂的哈希值,包括用户名,领域以及URI等。浏览器的URI不是webapp的URI(我用mod_rewrite修改了它),因此身份验证失败。
有关如何解决此问题的任何想法?
答案 0 :(得分:0)
最后,我找到了一个简单的解决方案。 Tomcat的Digest阀门的一个可配置值是不验证URI。这可以通过在context.xml文件中添加摘要阀配置来完成:
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Valve className="org.apache.catalina.authenticator.DigestAuthenticator" validateUri="false" />
......
我不确定是否有人会说这是不安全的......但是,我的情况就足够了。