Ограничение доступа к консоли администратора Keycloak

#keycloak

#keycloak

Вопрос:

Есть ли какой-либо способ настроить Keycloak 2.2.1 так, чтобы консоль администратора была недоступна с удаленного IP?

В принципе, я хотел бы настроить ее как консоль администратора Wildfly, где вы можете получить к ней доступ локально на сервере, но не можете получить к ней удаленный доступ.

Ответ №1:

Согласно документам Keycloak, у каждой области есть специальная консоль администратора, доступ к которой можно получить, перейдя по URL /auth/admin/{realm-name} / console.

Я думаю, вы могли бы заблокировать этот URL для внешнего доступа, сохранив внимание к другим URI, которые могут использоваться для Keycloak REST API и для внешних модулей, которые также могут загружать внешние приложения (например, модуль javascript). Тот же подход также может быть применен для администратора консоли JBoss EAP с портом по умолчанию 9990.

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] amp;quot;%ramp;quot; %s %b amp;quot;%{i,Referer}amp;quot; amp;quot;%{i,User-Agent}amp;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/) -amp;> ip-access-control(default-allow=false, acl={'127.0.0.1 allow'})" />
            </filters>
        </subsystem>
  

Ссылка:
https://access.redhat.com/solutions/18412