0

我的公共网络应用程序有一个特殊的 servlet 来生成已发布文档的摘要并将它们保存到服务器上配置的文件路径。此 servlet 只能由应用管理员指定的 ip 使用。

我希望/是这种东西可以通过tomcats安全管理器进行配置(一个特殊的servlet/ url应该只“监听”一个特定的ip-(范围))。这可能吗?

或者一般来说:我不想在我的代码中实现“安全性”(它自己的 servlet 可以过滤 ip)。这应该是容器配置或系统配置的问题。

那么如何实现

4

1 回答 1

1

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 章解释了如何安装阀门。

于 2012-11-26T13:00:13.237 回答