#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>