有没有办法通过在WildFly中配置来限制访问?

时间:2015-07-30 08:43:07

标签: wildfly-8

有没有办法通过在WildFly中配置来限制访问。我想知道我们是否可以添加只能访问服务器的IP列表?有没有办法将服务器级别的IP列入黑名单?

我正在查看这样的功能:http://boseca.blogspot.in/2010/12/programmatically-addremove-ip-security.html

2 个答案:

答案 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'}]

Source

或者(或者如果您使用早于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>