限制对Keycloak管理控制台的访问

时间:2016-10-20 15:33:32

标签: keycloak

有没有办法配置Keycloak 2.2.1,以便无法从远程IP访问管理控制台?

基本上,我想将它设置为Wildfly管理控制台,您可以在服务器上本地访问它,但无法远程访问它。

2 个答案:

答案 0 :(得分:1)

根据Keycloak文档,每个领域都有一个专用的管理控制台,可以通过转到URL / auth / admin / {realm-name} / console 来访问。

我认为您可以阻止此URL进行外部访问,同时关注可能用于Keycloak REST API的其他URI以及外部应用程序也可以下载的外部模块(如javascript模块)。同样的方法也可以应用于默认端口9990的JBoss EAP控制台管理。

JBoss EAP具有可用于阻止特定IP范围或仅限制访问本地服务器的其他功能。

您还可以应用特定的下载过滤器来阻止外部访问。 见下面的例子:

<subsystem xmlns="urn:jboss:domain:undertow:4.0">
            <buffer-cache name="default"/>
            <server name="default-server">
                <ajp-listener name="ajp" socket-binding="ajp"/>
                <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
                <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
                <host name="default-host" alias="localhost">
                    <location name="/" handler="welcome-content"/>
                    <http-invoker security-realm="ApplicationRealm"/>
                    <filter-ref name="proxy-peer" />
                    <filter-ref name="restrict-admin-console-access" />
                    <access-log pattern="%h %l %u [%t] &quot;%r&quot; %s %b &quot;%{i,Referer}&quot; &quot;%{i,User-Agent}&quot;" />
                </host>
            </server>
            <servlet-container name="default">
                <jsp-config/>
                <websockets/>
            </servlet-container>
            <handlers>
                <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
            </handlers>
            <filters>
                    <filter name="request-dumper" class-name="io.undertow.server.handlers.RequestDumpingHandler" module="io.undertow.core" />
                    <request-limit name="limit-connections" queue-size="100" max-concurrent-requests="1200" />
                    <filter name="proxy-peer" module="io.undertow.core" class-name="io.undertow.server.handlers.ProxyPeerAddressHandler" />
                    <expression-filter module="io.undertow.core" name="restrict-admin-console-access" expression="path-prefix(/auth/admin/master/console/) -&gt; ip-access-control(default-allow=false, acl={'127.0.0.1 allow'})" />
            </filters>
        </subsystem>

参考: https://access.redhat.com/solutions/18412

答案 1 :(得分:-1)

我想有很多方法。我想到的两个是在linux中使用iptables服务...或者启动一个docker而不是通过外部端口暴露它的端口