我想限制对我的 Tomcat webapp 中某些 URL 的访问。应该只允许 3 个已知 IP 地址访问符合特定模式的 URL。
例如http://example.com:1234/abc/personId
我怎样才能做到这一点?
我想限制对我的 Tomcat webapp 中某些 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。
You can do that with this in server.xml:
<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.*"
/>
(these are real IP addresses: owners, you know why :-|) but as you can see it is really a blocker not an enabler. A better solution would be to put Apache HTTPD in front of it with Deny All and Allow From statements, which will let you allow only the 3 IP addresses you need to access the service.
你可以使用这样的东西来阻止 ips,如果你在代理后面:
<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的东西。