Перейти к основному содержимому

Настройка страницы входа для Keycloak

· 4 мин. чтения

1. Обзор

Keycloak — это сторонний сервер авторизации, используемый для управления требованиями аутентификации и авторизации наших веб-приложений или мобильных приложений. Он использует страницу входа по умолчанию для входа пользователей от имени нашего приложения.

В этом руководстве мы сосредоточимся на том, как мы можем настроить страницу входа для нашего сервера Keycloak, чтобы она выглядела по-другому. Мы увидим это как для автономных, так и для встроенных серверов.

Мы будем опираться на настройку тем для учебника Keycloak , чтобы сделать это.

2. Настройка автономного сервера Keycloak

Продолжая наш пример пользовательской темы, давайте сначала рассмотрим автономный сервер.

2.1. Настройки консоли администратора

Чтобы запустить сервер, давайте перейдем в каталог, в котором хранится наш дистрибутив Keycloak, и запустим эту команду из его папки bin :

./standalone.sh -Djboss.socket.binding.port-offset=100

После запуска сервера нам нужно только обновить страницу, чтобы увидеть наши изменения, благодаря изменениям, которые мы ранее внесли в файл standalone.xml .

Теперь давайте создадим новую папку с именем login внутри каталога themes/custom . Для простоты мы сначала скопируем сюда все содержимое каталога themes/keycloak/login . Это тема страницы входа по умолчанию.

Затем мы перейдем в консоль администратора , введем учетные данные initial1 / zaq1!QAZ и перейдем на вкладку « Темы » для нашей области:

./04d90bdd1726fb0c9d8ea471cd70491d.png

Мы выберем пользовательскую тему для входа в систему и сохраним наши изменения.

Теперь с этим набором мы можем попробовать некоторые настройки. Но перед этим давайте взглянем на страницу входа по умолчанию :

./924372d4a4dcaffeb3a140f6244da636.png

2.2. Добавление настроек

Теперь предположим, что нам нужно изменить фон. Для этого мы откроем login/resources/css/login.css и изменим определение класса:

.login-pf body {
background: #39a5dc;
background-size: cover;
height: 100%;
}

Чтобы увидеть эффект, давайте обновим страницу:

./d8b5c580371a450653a9eb34c9fed6c5.png

Далее попробуем изменить метки для имени пользователя и пароля.

Для этого нам нужно создать новый файл messages_en.properties в папке theme/login/messages . Этот файл переопределяет пакет сообщений по умолчанию, используемый для данных свойств:

usernameOrEmail=Enter Username:
password=Enter Password:

Для проверки снова обновите страницу:

./786578ecf0d6f6861253ee74dfb3d3fd.png

Предположим, мы хотим изменить весь HTML или его часть, нам нужно переопределить шаблоны freemarker, которые Keycloak использует по умолчанию. Шаблоны по умолчанию для страницы входа хранятся в каталоге base/login .

Допустим, мы хотим, чтобы WELCOME TO FOREACH отображалось вместо SPRINGBOOTKEYCLOAK .

Для этого нам нужно скопировать base/login/template.ftl в нашу папку custom/login .

В скопированном файле измените строку:

<div id="kc-header-wrapper" class="${properties.kcHeaderWrapperClass!}">
${kcSanitize(msg("loginTitleHtml",(realm.displayNameHtml!'')))?no_esc}
</div>

К:

<div id="kc-header-wrapper" class="${properties.kcHeaderWrapperClass!}">
WELCOME TO FOREACH
</div>

На странице входа теперь будет отображаться наше пользовательское сообщение вместо имени области.

3. Настройка встроенного сервера Keycloak

Первым шагом здесь является добавление всех артефактов, которые мы изменили для автономного сервера, в исходный код нашего встроенного сервера авторизации.

Итак, давайте создадим новую папку для входа в src/main/resources/themes/custom со следующим содержимым:

./6f81240d45d7ad940e49320f35e98a1b.png

Теперь все, что нам нужно сделать, это добавить инструкцию в наш файл определения области, foreach-realm.json , чтобы для нашего типа темы входа в систему использовался пользовательский :

"loginTheme": "custom",

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

Для тестирования давайте перейдем на страницу входа :

./5fb17367a0dfeffaf61b10ca8893a0b2.png

Как мы видим, все настройки, сделанные ранее для автономного сервера, такие как фон, имена меток и заголовок страницы, появляются здесь.

4. Обход страницы входа в Keycloak

Технически мы можем полностью обойти страницу входа в Keycloak, используя пароль или поток предоставления прямого доступа . Однако настоятельно рекомендуется вообще не использовать этот тип гранта.

В этом случае нет промежуточного этапа получения кода авторизации, а затем получения токена доступа взамен. Вместо этого мы можем напрямую отправить учетные данные пользователя через вызов REST API и получить в ответ токен доступа.

Фактически это означает, что мы можем использовать нашу страницу входа для сбора идентификатора и пароля пользователя и вместе с идентификатором и секретом клиента отправить их в Keycloak в POST на конечную точку токена .

Но опять же, поскольку Keycloak предоставляет богатый набор функций входа в систему, таких как «запомнить меня», сброс пароля и MFA, и это лишь некоторые из них, нет особых причин обходить его.

5. Вывод

В этом руководстве мы узнали, как изменить страницу входа по умолчанию для Keycloak и добавить наши настройки .

Мы видели это как для автономного, так и для встроенного экземпляра.

Наконец, мы кратко рассмотрели, как полностью обойти страницу входа в Keycloak и почему бы этого не сделать.

Как всегда, исходный код доступен на GitHub. Для автономного сервера — на GitHub с руководствами , а для встроенного экземпляра — на GitHub для OAuth .