«1. Обзор

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

Хотя администратор может добавлять пользователей, Keycloak также позволяет пользователям регистрироваться самостоятельно. Кроме того, наряду с атрибутами по умолчанию, такими как имя, фамилия и адрес электронной почты, мы также можем добавить дополнительные пользовательские атрибуты, соответствующие потребностям нашего приложения.

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

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

2. Автономный сервер

Сначала мы увидим самостоятельную регистрацию пользователя на автономном сервере Keycloak.

2.1. Включение регистрации пользователей

Первоначально нам нужно включить Keycloak, чтобы разрешить регистрацию пользователей. Для этого нам сначала нужно запустить сервер, выполнив эту команду из папки bin нашего дистрибутива Keycloak:

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

Затем нам нужно перейти в консоль администратора и ввести учетные данные initial1/zaq1!QAZ.

Далее, на вкладке «Вход» на странице «Настройки игрового мира» мы переключим кнопку «Регистрация пользователя»:

Вот и все! Нам просто нужно нажать «Сохранить», и самостоятельная регистрация будет включена.

Итак, теперь мы получим ссылку с именем «Регистрация» на странице входа:

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

Ссылка для регистрации ведет нас на страницу регистрации:

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

В следующем разделе мы увидим, как мы можем добавить дополнительные атрибуты к нашему выбору.

2.2. Добавление пользовательских атрибутов пользователя

Продолжая нашу пользовательскую тему, давайте скопируем существующий шаблон base/login/register.ftl в нашу папку custom/login.

Теперь попробуем добавить новое поле ДОБ для даты рождения. Для этого нам нужно изменить указанный выше файл register.ftl и добавить следующее:

<div class="form-group">
    <div class="${properties.kcLabelWrapperClass!}">
        <label for="user.attributes.dob" class="${properties.kcLabelClass!}">
          Date of birth</label>
    </div>

    <div class="${properties.kcInputWrapperClass!}">
        <input type="date" class="${properties.kcInputClass!}" 
          id="user.attributes.dob" name="user.attributes.dob" 
          value="${(register.formData['user.attributes.dob']!'')}"/>
    </div>
</div>

Теперь, когда мы регистрируем нового пользователя на этой странице, мы также можем ввести его дату рождения:

Для проверки , давайте откроем страницу «Пользователи» в консоли администратора и найдем Джейн:

Затем давайте перейдем к атрибутам Джейн и проверим дату рождения:

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

3. Встроенный сервер

Теперь давайте посмотрим, как мы можем добавить пользовательские атрибуты для самостоятельной регистрации для сервера Keycloak, встроенного в приложение Spring Boot.

То же, что и в первом шаге для автономного сервера, нам нужно сначала включить регистрацию пользователей.

Мы можем сделать это, установив для RegistrationAllowed значение true в нашем файле определения области, baeldung-realm.json:

"registrationAllowed" : true,

После этого нам нужно добавить дату рождения в register.ftl точно так же, как и сделано ранее.

Далее скопируем этот файл в наш каталог src/main/resources/themes/custom/login.

Теперь при запуске сервера наша страница входа содержит ссылку для регистрации. Вот страница саморегистрации с нашим настраиваемым полем Дата рождения:

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

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

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

4. Заключение

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

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

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