我的公共网络应用程序有一个特殊的 servlet 来生成已发布文档的摘要并将它们保存到服务器上配置的文件路径。此 servlet 只能由应用管理员指定的 ip 使用。
我希望/是这种东西可以通过tomcats安全管理器进行配置(一个特殊的servlet/ url应该只“监听”一个特定的ip-(范围))。这可能吗?
或者一般来说:我不想在我的代码中实现“安全性”(它自己的 servlet 可以过滤 ip)。这应该是容器配置或系统配置的问题。
那么如何实现
Tomcat 已经带有远程地址过滤阀,可以过滤所有请求以匹配模式。如果您只需要为单个 URI 提供过滤,最好扩展RequestFilterValve
类并将逻辑嵌入到扩展中。像这样的东西应该可以工作(尚未在本地测试,但您应该能够理解):
public class YourValve extends org.apache.catalina.valves.RequestFilterValve {
public void invoke(Request request, Response response) throws IOException, ServletException {
if (request.getRequestURI().startsWith("/path/to/your/secure/servlet") {
process(request.getRequest().getRemoteAddr(), request, response);
} else {
// no need to filter anything
}
}
}
您必须配置此阀门以提供allow
正则表达式,如远程地址过滤器文档中所述。可能是这样的
<Valve className="YourValve" allow="127\.\d+\.\d+\.\d+"/>
(以上只允许本地主机)
本文第 4.1 章解释了如何安装阀门。