【问题标题】:Make Tomcat 9 ignore Http Basic information使Tomcat 9忽略Http基本信息
【发布时间】:2018-03-02 14:29:35
【问题描述】:

我有一个使用 IIS + Tomcat 的设置(在两者之间使用 Tomcat 连接器)。本地访问时,tomcat 站点完全不受保护 (http://localhost:8080),但是 IIS 需要基本身份验证。设置工作正常,只是 Tomcat 在看到 http 基本授权标头时似乎感到困惑。

一个简单的例子:

我想要实现的是 IIS 应该处理安全性,而 Tomcat 应该忽略将从 IIS 传递到 Tomcat 的 Authorization 标头。有什么想法可以实现吗?

【问题讨论】:

  • 如果应用程序未配置为需要身份验证,Tomcat 应忽略 HTTP Basic 请求标头。发布您正在观察的协议跟踪。
  • @ChristopherSchultz:感谢您的回复。我尝试访问的 Tomcat 应用程序是 geowebcache 1.11。我认为这个应用程序使用的身份验证机制(http 基本)会干扰我的请求。我记得在 geowebcache 中看到过一些关于 Spring Security 的内容。我会检查并报告我的发现。
  • Geowebcache 预定义了一个名为“geowebcache”的用户,有趣的是,只要我在我的 Http Basic Auth 标头中匹配该用户名,我就可以访问 geowebcache 中未受保护的 url。密码不一定要正确(?)但是,使用未知用户名和 geowebcache 会抛出 401(即使我试图访问不受保护的 url)。
  • geowebcache "org.springframework.web.filter.DelegatingFilterProxy" 的 web-config 中有一个过滤器负责 401。取消注释此过滤器解决了我的问题,因为安全性完全由 IIS 处理.
  • 在尝试创建我的 seup 时,我偶然发现了 tomcat AJP 连接器上的两个属性,这在尝试在 IIS 和 Tomcat 之间共享身份验证信息时很有用:tomcatAuthentication 和 tomcatAuthorization tomcat.apache.org/tomcat-9.0-doc/config/ajp.html

标签: tomcat iis isapi


【解决方案1】:

好的,现在我有了一个完全可用的解决方案,其中 IIS 处理所有身份验证。 IIS 中的“根”站点不受保护,但通过连接器发送到 Tomcat 的所有内容都需要身份验证。您需要做的就是保护在 Tomcat 连接器设置期间创建的虚拟 jakarta 目录,例如:

  <location path="jakarta">
    <system.web>
      <authorization>
        <deny users="?" /> <!-- deny anonymous access -->
      </authorization>
    </system.web>
  </location>

如果您想根据 IIS 设置的主体在 Tomcat 中执行授权,请查看 Tomcats server.xml 中 Connector 元素上的 tomcatAuthentication 和 tomcatAuthorization 属性,例如:

【讨论】:

    猜你喜欢
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 2020-03-22
    • 2019-02-08
    • 2012-02-26
    • 1970-01-01
    相关资源
    最近更新 更多