Установка и настройка Keycloak в CentOS 8

Оцените статью

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. Перейдите туда через браузер и убедитесь, что всё работает.

Тестовый запуск Keycloak

Теперь остановим сервер комбинацией клавишь 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».

AD Provider
  1. Нажмите кнопку «Create» и выберите тип провайдера «LDAP».
  2. Введите название нового провайдера, например, «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.

Похожие записи

Интеграция Gitea и Active Directory

Продолжаем разбираться с функционалом Gitea и на данный момент у меня задача настроить авторизацию пользователей Active Directory в Gitea с разделением по группам. Я уже рассказывал как настроить авторизацию пользователей…

Назначение операций на дополнительные кнопки мыши (Linux Wayland)

Пришла мне в голову гениальная мысль «забиндить» операции копировать-вставить на две дополнительные кнопки у моей ZET GAMING Prime и казалось бы, что могло пойти не так? Конечно же оказалось в…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Установка и настройка Keycloak в CentOS 8

Установка и настройка Keycloak в CentOS 8

Интеграция Gitea и Active Directory

Интеграция Gitea и Active Directory

Назначение операций на дополнительные кнопки мыши (Linux Wayland)

Назначение операций на дополнительные кнопки мыши (Linux Wayland)

Настройка CI в Gitea (Action Runner)

Настройка CI в Gitea (Action Runner)

Подключение NFS-шары в качестве хранилища резервных копий ZVirt

Подключение NFS-шары в качестве хранилища резервных копий ZVirt

SOCKS5 Proxy в Ubuntu Linux за одну минуту

SOCKS5 Proxy в Ubuntu Linux за одну минуту