Security Tomcat:限制对本地主机的访问/仅限一个/webapp
我正在运行Tomcat6来服务几个web应用程序,其中大多数都是面向公众的。但我想限制对一个webapp的访问,只允许从localhost进行连接 我可以使用context.xml中的阀限制所有Web应用的访问,如中所述:Security Tomcat:限制对本地主机的访问/仅限一个/webapp,security,tomcat,webserver,tomcat6,Security,Tomcat,Webserver,Tomcat6,我正在运行Tomcat6来服务几个web应用程序,其中大多数都是面向公众的。但我想限制对一个webapp的访问,只允许从localhost进行连接 我可以使用context.xml中的阀限制所有Web应用的访问,如中所述: 但我不知道如何限制每个应用的访问。有没有办法用我的应用程序的web.xml做到这一点?或者通过向context.xml添加其他规则 谢谢 -B 重述解决方案: $cp/var/lib/tomcat6/conf/context.xml\ /var/lib/tomcat6
重述解决方案:
$cp/var/lib/tomcat6/conf/context.xml\
/var/lib/tomcat6/conf/Catalina/localhost/my-app-name.xml
$cat/var/lib/tomcat6/conf/Catalina/localhost/my-app-name.xml
... {如前所述}。。。
您可以为应用程序创建一个单独的context.xml
这是Tomcat文档中关于上下文配置的摘录:
可以明确定义上下文元素:
- 在
$CATALINA_HOME/conf/context.xml文件中:所有webapps都将加载上下文元素信息。 在
文件中:该主机的所有webapps都将加载上下文元素信息$CATALINA_HOME/conf/[engineame]/[hostname]/context.xml.default
- 在
目录中的单个文件中(扩展名为$CATALINA_HOME/conf/[engineame]/[hostname]/
)。文件名(减去.xml
)扩展名将用作上下文路径。可以使用.xml
定义多级上下文路径,例如#
作为foo#bar.xml
的上下文路径。可以使用名为/foo/bar
的文件定义默认web应用程序ROOT.xml
- 仅当
中的应用程序不存在上下文文件时;在应用程序文件中的$CATALINA_HOME/conf/[engineame]/[hostname]/
处的单个文件中。如果web应用程序打包为WAR,则/META-INF/context.xml
将被复制到/META-INF/context.xml
并重命名以匹配应用程序的上下文路径。一旦此文件存在,如果在主机的appBase中放置了具有更新的$CATALINA_HOME/conf/[engineame]/[hostname]/
的新WAR,则不会替换该文件/META-INF/context.xml
- 允许
本地主机
对我不起作用。我改用remoteaddrve
。请记住,某些系统使用IPv4地址(您的筛选器必须匹配127.0.0.1
),而其他系统使用IPv6地址(匹配完整地址,而不是缩写符号,如::1
)
属性
allow
接受一个regexp,因此需要转义点。正如所述,这将在/META-INF/context.xml
中转到以下路径:C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\Catalina\localhost\
在此路径下可以找到“manager.xml”文件
编辑“manager.xml”文件,包括以下内容:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.0.0.1,10.100.1.2"/>
<!-- Link to the user database we will get roles from
<ResourceLink name="users" global="UserDatabase"
type="org.apache.catalina.UserDatabase"/>
-->
******保存并运行服务器…您已经知道了。
注意:127.0.0.1表示您的系统IP
10.100.1.2-这是您的朋友上下文是“单个应用程序”。每一场战争都有它自己的背景。您使用的应用程序定义是什么?
<Context>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="0:0:0:0:0:0:0:1,127\.0\.0\.1" />
</Context>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.0.0.1,10.100.1.2"/>
<!-- Link to the user database we will get roles from
<ResourceLink name="users" global="UserDatabase"
type="org.apache.catalina.UserDatabase"/>
-->