我想限制Tomcat Web应用程序中某些URL的访问。只有3个已知的IP地址可以访问符合特定模式的URL。
例如:http://example.com:1234/abc/personId
我该如何实现这一点?
我想限制Tomcat Web应用程序中某些URL的访问。只有3个已知的IP地址可以访问符合特定模式的URL。
例如:http://example.com:1234/abc/personId
我该如何实现这一点?
使用 org.apache.catalina.filters.RemoteAddrFilter 过滤器并将其映射到您希望保护的 URL。有关配置详细信息,请参见 http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_Address_Filter。
<Valve
className="org.apache.catalina.valves.RemoteAddrValve"
deny="117.40.83.*,122.224.95.*,119.255.28.*,218.8.245.*,218.85.139.*,219.117.197.*,124.89.39.*,58.18.172.*,180.153.225.*"
/>
<Context path="/manager" docBase="manager" reloadable="true" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteIpValve"/>
<Valve className="org.apache.catalina.valves.RemoteHostValve" allow="<your IP regex>"/>
</Context>
我不会限制IP地址访问,原因如下:
x-forwarded-for
标头的网关设备后的客户端只有网关设备的IP地址;信任该IP地址相当于信任网关后的所有人,同样假设您想要给某些客户提供访问权限。相反的,如果你需要运行一个系统,其中一些调用只能被特定用户访问,我会使用身份验证 - SSL客户端证书对这个目的非常好用。另外,你可以使用类似 OAuth 的东西。