我有一个 IIS + Tomcat 设置(在两者之间使用 Tomcat 连接器)。在本地访问时,tomcat 站点完全不 protected (http://localhost:8080),但是 IIS 需要基本身份验证。设置工作正常,只是 Tomcat 在看到 http 基本授权 header 时似乎感到困惑。
一个简单的例子:
- 访问http://localhost:8080/mysite => 好的
- 访问http://localhost:8080/mysite (带有 HTTP 授权 header :基本 ....)=> 401
我想要实现的是 IIS 应该处理安全性,而 Tomcat 应该忽略将从 IIS 传递到 Tomcat 的授权 header 。有什么想法可以实现吗?
最佳答案
好的,现在我有了一个完全可行的解决方案,其中 IIS 处理所有身份验证。 IIS 中的“根”站点不 protected ,但通过连接器发送到 Tomcat 的所有内容都需要身份验证。您需要做的就是保护在 Tomcat 连接器设置期间创建的虚拟 jakarta 目录,例如:
<location path="jakarta">
<system.web>
<authorization>
<deny users="?" /> <!-- deny anonymous access -->
</authorization>
</system.web>
</location>
如果您想根据 IIS 设置的主体在 Tomcat 中执行授权,请查看 Tomcats server.xml 中连接器元素上的属性 tomcatAuthentication 和 tomcatAuthorization,例如:
关于tomcat - 使 Tomcat 9 忽略 Http 基本信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49071171/