Настройка 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#

  1. Зайдите в админ-консоль Keycloak → Create realm

  2. Укажите имя (например, dev-test)

  3. Запомните URL realm: https://<keycloak-host>/realms/dev-test

Настройка федерации пользователей (LDAP/AD)#

  1. Realm → User federationAdd provider: ldap

  2. Заполните поля:

    • Connection URL

    • Bind DN / Bind credentials

    • Users DN (Base DN)

    • Use StartTLS/SSL — по необходимости

  3. Во вкладке Mappers настройте сопоставление атрибутов (username, email, firstName, lastName). При использовании нескольких доменов настройте маппинг имени пользователя на userPrincipalName

  4. Сохраните и выполните импорт пользователей

Создание клиента (OIDC) для Global Server#

  1. Realm → ClientsCreate

  2. Заполните:

    • Client Type: OpenID Connect

    • Client ID: global-erp

    • Client authentication: ON (конфиденциальный клиент)

  3. Valid Redirect URIshttps://{global.server}/* (позже уточнить)

  4. Scopesopenid email profile

  5. Сохраните и сгенерируйте Client Secret

Включение защиты от брутфорса#

  1. Realm → Realm Settings → Security Defenses → Brute Force Detection

  2. Включите и задайте параметры:

    • Max login failures

    • Wait increment

    • Quick login check и т.д.

(Опционально) Настройка 2FA с кодом на e-mail#

  1. Realm → Realm Settings → Email — настройте SMTP

  2. Установите плагин (например keycloak-email-otp)

  3. Realm → Authentication → Flows

  4. Скопируйте поток «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>