【发布时间】:2018-03-02 14:29:35
【问题描述】:
我有一个使用 IIS + Tomcat 的设置(在两者之间使用 Tomcat 连接器)。本地访问时,tomcat 站点完全不受保护 (http://localhost:8080),但是 IIS 需要基本身份验证。设置工作正常,只是 Tomcat 在看到 http 基本授权标头时似乎感到困惑。
一个简单的例子:
- 访问http://localhost:8080/mysite => 好的
- 访问http://localhost:8080/mysite(带有HTTP授权标头:基本......)=> 401
我想要实现的是 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