Перейти к основному содержанию
`Ctrl`+`K`

# Настройка 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 URIs — `https://{global.server}/*`.

4. Scopes — `openid 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>