有没有办法通过在WildFly中配置来限制访问。我想知道我们是否可以添加只能访问服务器的IP列表?有没有办法将服务器级别的IP列入黑名单?
我正在查看这样的功能:http://boseca.blogspot.in/2010/12/programmatically-addremove-ip-security.html
答案 0 :(得分:2)
如果您正在使用Wildfly 8.2(包含Undertow 1.1.0),那么您可以通过undertow-handlers.conf
文件配置IP访问控制,该文件是您在战争中{{1}或者jar的WEB-INF
文件夹。
您可以执行以下操作:
META-INF
这也可以与谓词结合使用:
ip-access-control[default-allow=false, acl={'10.0.0.1 deny', '10.0.0.0/24 allow'}]
或者(或者如果您使用早于Wildfly的8.2版本),您可以创建ServletExtension。创建一个文件path-prefix[/internal] -> ip-access-control[acl={ '10.0.0.0/24 allow'}]
,其中应该有一个完全限定的扩展名。扩展必须实现META-INF\services\io.undertow.servlet.ServletExtension
接口。然后,此扩展可以以编程方式创建io.undertow.servlet.ServletExtension
,对其进行配置,并将其添加到部署的初始处理程序链中。
上面谈到了在部署级别添加处理程序。要在服务器级别添加自定义处理程序,至少需要Wildfly 8.2。在standalone.xml(或您使用的任何配置)中的下位子系统中,您可以添加这样的处理程序(过滤器)(省略不相关的配置):
io.undertow.server.handlers.IPAddressAccessControlHandler
Source。处理程序必须位于静态服务器模块中,而不是位于部署中。继承<subsystem xmlns="urn:jboss:domain:undertow:1.2">
<server name="default-server">
<host name="default-host" alias="localhost">
<filter-ref name="custom-filter" />
</host>
</server>
<filters>
<filter name="custom-filter" module="io.undertow.core" />
class-name="io.undertow.server.handlers.HttpTraceHandler"
</filters>
</subsystem>
,在构造函数中对其进行配置或根据需要覆盖其方法,并将配置指向自定义处理程序。
根据WFLY-4048,基于文本的处理程序配置在服务器级别将位于Wildfly 10中。
答案 1 :(得分:2)
您还可以通过添加filter-ref和表达式过滤器在JBOSS级别实现IP过滤器,如下所示
<subsystem xmlns="urn:jboss:domain:undertow:3.0" statistics-enabled="true" instance-id="instanceid">
<buffer-cache name="default"/>
<server name="default-server">
<ajp-listener name="ajp" max-connections="1200" write-timeout="600000" read-timeout="30000" allow-equals-in-cookie-value="true" record-request-start-time="true" socket-binding="ajp"/>
<http-listener name="default" allow-equals-in-cookie-value="true" socket-binding="http"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<access-log suffix=".log" prefix="access" pattern="%a %h %{i,sm_user} %u %t %r %s %b %T"/>
<filter-ref name="limit-connections"/>
<filter-ref name="ipaccess"/>
<single-sign-on/>
</host>
</server>
<servlet-container name="default">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<request-limit name="limit-connections" queue-size="100" max-concurrent-requests="1200"/>
<expression-filter module="io.undertow.core" name="ipaccess" expression="ip-access-control[default-allow=false, acl={'10.0.0.1 deny', '10.0.0.0/24 allow'}]"/>
</filters>
</subsystem>