Keycloak — это сервер аутентификации, который поддерживает множество протоколов (OpenID Connect, SAML) и позволяет интегрироваться с различными источниками пользователей, такими как LDAP/Active Directory.
Подготовка сервера CentOS 8
Обновление системы
# dnf update -y
После перезагрузки проверим версию операционной системы.
# cat /etc/os-release
Убедитесь, что у вас установлена последняя версия CentOS 8 или RedOS 8.
NAME="RED OS"
VERSION="8.0.2"
PLATFORM_ID="platform:red80"
ID="redos"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.0.2"
PRETTY_NAME="RED OS 8.0.2"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redos:redos:8"
HOME_URL="https://redos.red-soft.ru"
BUG_REPORT_URL="https://support.red-soft.ru"
EDITION="Standard"
Настройка SELinux для работы с Keycloak
Для корректной работы Keycloak необходимо включить режим permissive или отключить SELinux полностью. Для этого выполните команду.
# setenforce Permissive
Или отключаем его навсегда, отредактировав файл /etc/selinux/config.
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
Перезагрузимся после изменений.
# reboot
Установим необходимые пакеты.
# dnf install java-17-openjdk-headless git wget unzip nano vim -y
Если хотите использовать другой Java Runtime Environment (например, Oracle JDK), то можно установить её отдельно, скачав установочный пакет с официального сайта.
Загрузка и установка Keycloak
На момент написания актуальной версией является Keycloak 23.x, но лучше проверить актуальную версию на официальном сайте проекта https://www.keycloak.org/downloads.html
Скачайте архив Keycloak.
# wget https://github.com/keycloak/keycloak/releases/download/23.0.5/keycloak-23.0.5.zip
# unzip keycloak-23.0.5.zip
# cd keycloak-23.0.5/bin/
Запустим Keycloak в режиме разработки:
# ./kc.sh start-dev
По умолчанию Keycloak будет доступен по адресу http://localhost:8080. Перейдите туда через браузер и убедитесь, что всё работает.

Теперь остановим сервер комбинацией клавишь CTRL+C.
Запуск Keycloak в production mode
Создадим пользователя Keycloak и настроим права доступа к каталогу установки.
# useradd --system --home-dir=/opt/keycloak keycloak
# mkdir -p /opt/keycloak/data
# chown -R keycloak:keycloak /opt/keycloak
Скопируем распакованный архив Keycloak в этот каталог.
# cp -r keycloak-23.0.5/* /opt/keycloak/
# chown -R keycloak:keycloak /opt/keycloak/
Далее создадим системный сервис для Keycloak.
# tee /etc/systemd/system/keycloak.service <<EOF
[Unit]
Description=Keycloak Server Service
After=network.target postgresql.service mariadb.service mysql.service mongodb.service
[Service]
User=keycloak
Group=keycloak
Environment="JVM_OPTS=-Xms64m -Xmx512m"
ExecStart=/opt/keycloak/bin/kc.sh start --hostname kc.ipa.sngp.su --https-certificate-file=/opt/keycloak/ssl/kc-ipasngp-su.crt --https-certificate-key-file=/opt/keycloak/ssl/kc-ipasngp-su.key
Restart=always
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
EOF
Выполняем пересборку сервиса в Production режим и выполняем тестовый запуск.
# su keycloak
$ cd /opt/keycloak/bin/
$ ./kc.sh build
$ /opt/keycloak/bin/kc.sh start --hostname radm02-vm-nux.ipa.sngp.com
Обратите внимание, что вам потребуется установить параметр —hostname или в противном случае вы получите ошибку.
ERROR: Strict hostname resolution configured but no hostname setting provided
Также требуется сгенерировать SSL-сертификаты для сервера и прописать их в конфигурацию или наткнемся на другую ошибку.
ERROR: Key material not provided to setup HTTPS. Please configure your keys/certificates or start the server in development mode.
Генерируем сертификаты по инструкции.
Активируем и запустим сервис:
# systemctl daemon-reload
# systemctl enable keycloak
# systemctl start keycloak
Проверим статус сервиса:
# systemctl status keycloak
Пробрасываем порт.
$ ssh -L 8443:127.0.0.1:8443 root@10.54.54.60
Теперь перейдём к интерфейсу Keycloak (https://127.0.0.1:8443) и задаем пароль администратора.
Интеграция с FreeIPA
Интеграция Keycloak и FreeIPA подробно описана в моей статье.
Интеграция с Microsoft Active Directory
Добавляем провайдер Active Directory в Keycloak
В веб-интерфейсе Keycloak перейдем во вкладку «User federation».

- Нажмите кнопку «Create» и выберите тип провайдера «LDAP».
- Введите название нового провайдера, например, «AD Provider», и укажите следующие параметры:
- Vendor: Windows Active Directory
- Edit Mode: READ_ONLY (если не планируете изменять данные)
- Authentication Type: Simple Authenticator
- Bind DN: Полное имя пользователя AD (например, CN=user,CN=Users,DC=example,DC=com)
- Bind Credential: Пароль указанного выше пользователя
- User Object Classes: user
- Username LDAP Attribute: sAMAccountName
- RDN LDAP Attribute: cn
- UUID LDAP Attribute: objectGUID
- Search Scope: SUB_TREE
- Base DN for Users: CN=Users,DC=example,DC=com
- Allow Kerberos Authentication: No (можно изменить позже при необходимости)
- Connection URL: ldap(s)://<адрес вашего контроллера домена>:389(или 636 если используете SSL/TLS)
Нажмите «Save». После чего появится кнопка «Synchronize All Users», которая позволит импортировать всех пользователей из Active Directory.
Проверим поиск пользователей из двух источников
Переходим в раздел Users и в строке поиска вводим часть имени пользователя. В моем случае я получил данные из двух источников и это значит, что все настроено корректно.

Это базовый пример использования Keycloak совместно с Active Directory. В реальных условиях рекомендуется обратить внимание на дополнительные аспекты безопасности, такие как использование TLS/SSL, двухфакторная аутентификация и другие продвинутые функции Keycloak.




