Настройка 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 federation -> Add 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 -> Clients -> Create .

  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>