Настройка SSO#
Keycloak#
Введение#
Эта инструкция описывает настройку единого входа (SSO) по OpenID Connect (OIDC) между Keycloak и сервером приложений Global Server.
Мы создадим Realm и клиента в Keycloak, подключим федерацию пользователей (например, LDAP/AD), настроим защиту от брутфорса и (опционально) второй фактор аутентификации по e-mail, а затем соединим Keycloak и Global Server через global3.config.xml.
Global Server поддерживает SSO начиная с версии 1.25.0-rc33
Общая схема работы#

Предварительные требования#
Развёрнутый Keycloak (версии 21+)
Доступ администратора к Keycloak и Global AS
SMTP-сервер для отправки почты (для 2FA по e-mail)
Часть 1. Настройка Keycloak#
Создание Realm#
Зайдите в админ-консоль Keycloak → Create realm
Укажите имя (например,
dev-test)Запомните URL realm:
https://<keycloak-host>/realms/dev-test
Настройка федерации пользователей (LDAP/AD)#
Realm → User federation → Add provider: ldap
Заполните поля:
Connection URL
Bind DN / Bind credentials
Users DN (Base DN)
Use StartTLS/SSL — по необходимости
Во вкладке Mappers настройте сопоставление атрибутов (
username,email,firstName,lastName). При использовании нескольких доменов настройте маппинг имени пользователя на userPrincipalNameСохраните и выполните импорт пользователей
Создание клиента (OIDC) для Global Server#
Realm → Clients → Create
Заполните:
Client Type: OpenID Connect
Client ID:
global-erpClient authentication: ON (конфиденциальный клиент)
Valid Redirect URIs —
https://{global.server}/*(позже уточнить)Scopes —
openid email profileСохраните и сгенерируйте Client Secret
Включение защиты от брутфорса#
Realm → Realm Settings → Security Defenses → Brute Force Detection
Включите и задайте параметры:
Max login failures
Wait increment
Quick login check и т.д.
(Опционально) Настройка 2FA с кодом на e-mail#
Realm → Realm Settings → Email — настройте SMTP
Установите плагин (например
keycloak-email-otp)Realm → Authentication → Flows
Скопируйте поток «Browser» и добавьте шаг
Email OTPпослеUsername Password Form→ Required
Часть 2. Настройка Global AS (global3.config.xml)#
Добавьте новый блок <openId> в конфигурацию:
<security>
<authenticators>
<openId name="dev-test" default="true" autoLogin="false">
<provider url="https://<keycloak-host>/realms/dev-test"/>
<client id="global-as"
secret="*** CLIENT_SECRET ***"
authMethod="post"
scopes="openid,profile,email">
</client>
</openId>
</authenticators>
</security>