Tomcat 7中IP的URL访问控制

时间:2013-05-01 16:37:08

标签: url ip tomcat7 access-control

我需要根据tomcat 7.0.39上的客户端IP控制URL访问 这是我发现的 http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_Address_Filter

但是我无法理解它。 你有任何其他的例子,总统等。

我真正需要的是允许所有IP访问,例如。 "http://base_url/a/b/c" 并允许localhost / 127.0.0.1访问"http://base_url/a"

我无法理解如何匹配“任何”IP,或者我需要在过滤器中使用多个过滤器或多个条目。

感谢。

3 个答案:

答案 0 :(得分:1)

实际上,您只需要保护/base_url/a,因为其他地址都会对所有IP开放。定义2个过滤器。首先允许通过IP进行本地访问,其次是localhost:

<filter>
  <filter-name>RemoteAddressFilter</filter-name>
  <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
  <init-param>
    <param-name>allow</param-name>
    <param-value>127.0.0.1|::1|0:0:0:0:0:0:0:1</param-value>
  </init-param>
  <init-param>
    <param-name>deny</param-name>
    <param-value>192\.\d+\.\d+\.\d+</param-value>
  </init-param>   
</filter>
<filter-mapping>
  <filter-name>RemoteAddressFilter</filter-name>
  <url-pattern>/a/*</url-pattern>
</filter-mapping>


<filter>
  <filter-name>RemoteHostFilter</filter-name>
  <filter-class>org.apache.catalina.filters.RemoteHostFilter</filter-class>
  <init-param>
    <param-name>allow</param-name>
    <param-value>localhost</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>RemoteHostFilter</filter-name>
  <url-pattern>/a/*</url-pattern>
</filter-mapping>

答案 1 :(得分:0)

如果您编写的过滤器不能按照您期望的方式工作,您可以使用javax.servlet.Filter API(http://docs.oracle.com/javaee/6/api/javax/servlet/Filter.html)始终实现自己的过滤器。

这里有几个例子:

编写Servlet过滤器非常简单,您可以使其实现的不仅仅是IP过滤。

答案 2 :(得分:0)

谢谢大家,

最终我创建了自己的过滤器 这是如何:

  • 创建扩展BaseFilter和implament doFilter的类。
  • 必需的jar文件:catalina.jar,servlet_api.jar,tomcat_juli.jar
  • 运行chain.doFilter的do过滤器中的
  • 表示继续过滤此连接(如果不再使用它,则使用它) 过滤器存在)
  • init方法也可用于从web.xml(放置过滤器配置)中读取params
  • 添加你的新jar(使用过滤器到Tomcat的lib目录) 将jar名称添加到Tomcat / conf / catalina.properties default jar scanner

BR。