我想通过以下方式保护个人 tomcat。
基本上每个人(每个ip)应该都可以访问这个tomcat的webapps。
但是一些 ip 应该能够在没有身份验证的情况下访问 tomcat(大多数),而一些(例如 10.0.0.*)应该只能通过身份验证访问这个 tomcat。
我已经阅读了很多关于如何解决这个问题的资料。 Tomcat 远程访问过滤器和远程主机名在我的情况下不起作用,因为我不想拒绝/允许某些 IP 地址的 webapp。
我试图将这些行添加到 context.xml 中,我(本地主机)可以在没有身份验证的情况下访问 tomcat,但仍然需要身份验证:
<Context antiJARLocking="true" path="/">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" invalidAuthenticationWhenDeny="true" allow="127\.0\.0\.1"/>
<Valve className="org.apache.catalina.authenticator.BasicAuthenticator" />
所以我在我的知识末尾(也许我没有太多 :D)。
有人可以给我举个例子或解决我的问题吗?也许我需要编辑的不仅仅是这个文件?还是我误解了什么?
谢谢!
最佳答案
在tomcat中使用认证有两种方式。 1. 如果您希望每个网络应用程序都不会被每个用户访问,您可以实现“领域配置”。使用此配置,每次用户访问 tomcat 中已部署的 Web 应用程序时,
它会询问用户名和密码。 有关详细信息,请参阅以下链接: https://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html
- 另一种情况是,如果您希望特定的 ip 用户能够通过远程过滤器访问 tomcat,您可以实现这一点。 有关详细信息,请参阅以下链接: https://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_Host_Filter
正如您所说“Tomcat 远程访问过滤器和远程主机名在我的情况下不起作用,因为我不想拒绝/允许某些 IP 地址的 Web 应用程序。”
在这种情况下,如果您不想为 IP 绑定(bind) Web 应用程序,则可以实现“领域配置”。这就是为什么您可以尝试使用带有用户名和密码的领域配置。
如果您仍想使用远程过滤器,请分享您正在执行的程序,以了解您失败的地方。
关于java - tomcat 基本认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46728299/