有什么方法可以通过在 WildFly 中配置来限制访问吗?
Is there any way to restrict access by configuring in WildFly?
有没有办法通过在WildFly中配置来限制访问。我想知道是否可以添加一个只能访问服务器的IP列表?有没有办法在服务器级别将 IP 列入黑名单?
我正在检查这样的功能:http://boseca.blogspot.in/2010/12/programmatically-addremove-ip-security.html
如果您使用的是 Wildfly 8.2(其中包含 Undertow 1.1.0),那么您可以通过 undertow-handlers.conf
文件配置 IP 访问控制,该文件放在 war 的 WEB-INF
或 jar 的 META-INF
文件夹。
You can do something like:
ip-access-control[default-allow=false, acl={'10.0.0.1 deny', '10.0.0.0/24 allow'}]
this can also be combined with predicates:
path-prefix[/internal] -> ip-access-control[acl={ '10.0.0.0/24 allow'}]
或者(或者如果您使用早于 8.2 的 Wildfly 版本)您可以创建一个 ServletExtension。创建一个文件 META-INF\services\io.undertow.servlet.ServletExtension
,其中应该有您的扩展名的完全限定名称。扩展必须实现 io.undertow.servlet.ServletExtension
接口。然后,此扩展可能会以编程方式创建 io.undertow.server.handlers.IPAddressAccessControlHandler
,对其进行配置,并将其添加到部署的初始处理程序链中。
上面谈到了在部署级别添加处理程序。要在服务器级别添加自定义处理程序,您至少需要 Wildfly 8.2。在 standalone.xml 的 undertow 子系统中(或您使用的任何配置),您可以像这样添加一个处理程序(过滤器)(省略不相关的配置):
<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>
Source。处理程序必须在您的静态服务器模块中,而不是在部署中。继承 IPAddressAccessControlHandler
,在您的构造函数中对其进行配置或根据需要覆盖其方法,并将配置指向您的自定义处理程序。
根据 WFLY-4048 服务器级别的基于文本的处理程序配置将在 Wildfly 10 中。
您还可以通过添加 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>
有没有办法通过在WildFly中配置来限制访问。我想知道是否可以添加一个只能访问服务器的IP列表?有没有办法在服务器级别将 IP 列入黑名单?
我正在检查这样的功能:http://boseca.blogspot.in/2010/12/programmatically-addremove-ip-security.html
如果您使用的是 Wildfly 8.2(其中包含 Undertow 1.1.0),那么您可以通过 undertow-handlers.conf
文件配置 IP 访问控制,该文件放在 war 的 WEB-INF
或 jar 的 META-INF
文件夹。
You can do something like:
ip-access-control[default-allow=false, acl={'10.0.0.1 deny', '10.0.0.0/24 allow'}]
this can also be combined with predicates:
path-prefix[/internal] -> ip-access-control[acl={ '10.0.0.0/24 allow'}]
或者(或者如果您使用早于 8.2 的 Wildfly 版本)您可以创建一个 ServletExtension。创建一个文件 META-INF\services\io.undertow.servlet.ServletExtension
,其中应该有您的扩展名的完全限定名称。扩展必须实现 io.undertow.servlet.ServletExtension
接口。然后,此扩展可能会以编程方式创建 io.undertow.server.handlers.IPAddressAccessControlHandler
,对其进行配置,并将其添加到部署的初始处理程序链中。
上面谈到了在部署级别添加处理程序。要在服务器级别添加自定义处理程序,您至少需要 Wildfly 8.2。在 standalone.xml 的 undertow 子系统中(或您使用的任何配置),您可以像这样添加一个处理程序(过滤器)(省略不相关的配置):
<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>
Source。处理程序必须在您的静态服务器模块中,而不是在部署中。继承 IPAddressAccessControlHandler
,在您的构造函数中对其进行配置或根据需要覆盖其方法,并将配置指向您的自定义处理程序。
根据 WFLY-4048 服务器级别的基于文本的处理程序配置将在 Wildfly 10 中。
您还可以通过添加 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>