Перейти к содержанию

3.05.02 Настройка авторизации, Remember Me и корпоративного SSO

3.05.02 Настройка авторизации, Remember Me и корпоративного SSO

Инструкция предназначена для администратора, который настраивает авторизацию SkyV ITAM через Keycloak.

1. Режимы авторизации

SkyV ITAM поддерживает:

Режим Назначение
LEGACY Авторизация без новой интеграции Keycloak
KEYCLOAK Вход по логину и паролю через Keycloak
KEYCLOAK_WITH_CORPORATE_SSO Парольный вход и дополнительный вход через корпоративный Kerberos SSO

Выбранный режим задаётся в конфигурации инсталляции. Для корпоративного SSO пользователь нажимает кнопку «Войти через корпоративный SSO». Обычное открытие портала показывает парольный вход и не запускает SSO автоматически.

Форма входа SkyV ITAM с Remember Me и кнопкой корпоративного SSO

Рисунок — Форма входа SkyV ITAM

2. Предварительные условия

До настройки подготовьте:

  • публичные HTTPS-адреса портала и Keycloak;
  • realm SkyV ITAM;
  • доступ администратора к нужному realm;
  • LDAP-подключение к Active Directory;
  • Kerberos realm и публичное DNS-имя;
  • service account, SPN и keytab;
  • настроенный SMTP Keycloak, если требуется восстановление пароля;
  • возможность централизованно применить политики корпоративных браузеров.

DNS-имя, используемое браузером, должно совпадать с именем в Kerberos SPN. Сертификаты HTTPS и LDAPS должны быть доверенными.

Перед изменениями сохраните экспорт управляемых настроек realm, клиентов, authentication flows, User Federation, session limits и login theme. Не импортируйте полный realm поверх рабочего без отдельного плана миграции и отката.

3. OIDC-клиенты

Создайте два public OpenID Connect клиента.

3.1. itam-front

Клиент используется для обычного парольного входа:

Параметр Значение
Client authentication OFF
Standard flow ON
Implicit flow OFF
Direct access grants OFF
PKCE Code Challenge Method S256
Browser Flow override skyv-browser-form

3.2. itam-front-sso

Клиент используется только для явного корпоративного входа:

Параметр Значение
Client authentication OFF
Standard flow ON
Implicit flow OFF
Direct access grants OFF
PKCE Code Challenge Method S256
Browser Flow override skyv-browser-sso

Для обоих клиентов задайте:

  • точные HTTPS Valid Redirect URIs;
  • точные Valid Post Logout Redirect URIs;
  • точные Web Origins;
  • одинаковые client scopes и protocol mappers;
  • одинаковые прикладные роли и claims, требуемые SkyV ITAM.

Не используйте * в redirect URI и origins. Frontend является public client, поэтому client secret в нём не применяется.

Пример настройки двух OIDC-клиентов

Рисунок — Разделение обычного и корпоративного входа между OIDC-клиентами

4. Authentication Flows

Не изменяйте встроенный flow browser. Создайте две копии действующего flow, сохранив применяемые OTP/WebAuthn-проверки.

skyv-browser-form
├── Cookie                         ALTERNATIVE
└── Forms                          ALTERNATIVE
    └── Username Password Form     REQUIRED

skyv-browser-sso
├── Cookie                         ALTERNATIVE
├── Kerberos                       ALTERNATIVE
└── Forms                          ALTERNATIVE
    └── Username Password Form     REQUIRED

Kerberos обязательно должен иметь requirement ALTERNATIVE. Если Kerberos-ticket отсутствует или не принят, Keycloak должен показать парольную форму без циклических редиректов.

Назначьте skyv-browser-form клиенту itam-front, а skyv-browser-sso — клиенту itam-front-sso через Browser Flow override. Не назначайте SSO-flow на весь realm.

Пример Authentication Flows для обычного входа и SSO

Рисунок — Authentication Flows обычного и корпоративного входа

5. Remember Me

В Realm settings → Login включите Remember Me.

Рекомендуемый начальный профиль:

Параметр Значение
SSO Session Idle Remember Me 7 дней
SSO Session Max Remember Me 30 дней

Окончательные сроки согласуйте с политикой информационной безопасности. Обычные session limits не изменяйте автоматически вместе с Remember Me.

На форме галочка выключена по умолчанию. Пользователю следует включать её только на личном или доверенном устройстве. offline_access для этой функции не требуется.

Пример настройки Remember Me и сроков сессии

Рисунок — Настройка Remember Me и сроков длительной сессии

6. Login theme

Установите совместимую с версией Keycloak тему skyv-itam и выберите её в Realm settings → Themes → Login theme.

Включите локали ru и en. Для обеих локалей можно задать Realm overrides:

itamLogoUrl=https://<portal-host>/<path-to-logo>
itamSsoUrl=https://<portal-host>/auth/sso

itamLogoUrl задаёт логотип инсталляции. Разрешите его host в Content Security Policy img-src. При отсутствии корректного itamSsoUrl кнопка корпоративного входа не отображается.

После установки проверьте парольную форму, сообщения об ошибках, Remember Me, показ пароля, кнопку SSO, локализацию и обязательные действия пользователя.

7. LDAP и Kerberos

Настройте LDAP provider согласно инструкции «3.05.01 Инструкция по настройке LDAP» и дополнительно проверьте:

Параметр Требование
Username LDAP attribute sAMAccountName
Kerberos principal attribute оставить пустым для поиска по username без realm; указать userPrincipalName для поиска по полному principal
Allow Kerberos authentication ON

Один пользователь должен соответствовать одной LDAP-записи и одному Keycloak user ID независимо от способа входа.

Для нескольких контроллеров одного домена используйте одну отказоустойчивую LDAP-точку. Для независимых доменов создайте отдельные providers и заранее определите формат логина и правила разрешения одинаковых username.

8. SPN и keytab

Администратор Active Directory должен:

  1. Создать или выделить отдельную service account.
  2. Зарегистрировать для неё SPN HTTP/<public-host> и убедиться, что такой SPN не назначен другой учётной записи.
  3. Выпустить keytab для principal HTTP/<public-host>@<KERBEROS_REALM> с типами шифрования, разрешёнными политикой организации; для новых установок рекомендуется AES.
  4. Проверить, что principal в keytab в точности совпадает с Server principal в Keycloak.
  5. Передать keytab через защищённый канал в secret-хранилище.

Конкретные команды зависят от версии Active Directory, принятого способа управления service account и политики шифрования. Не помещайте в документацию реальные имена доменов, service account, пути, пароли или готовый keytab.

DevOps монтирует keytab read-only во все экземпляры Keycloak и подключает корректный krb5.conf. Keytab нельзя хранить в Git, документации, ConfigMap, realm export или CI artifacts.

Перевыпустите keytab при смене service account, ключей/пароля, SPN, публичного hostname или типов шифрования.

Из Keycloak должны быть доступны DNS, точное время, LDAP и KDC по TCP/UDP 88. Reverse proxy должен пропускать заголовки Authorization: Negotiate и WWW-Authenticate: Negotiate.

9. Политики корпоративных браузеров

Для Edge, Chrome и Яндекс Браузера централизованно примените:

AuthServerAllowlist = <public-host>
DisableAuthNegotiateCnameLookup = enabled

Kerberos delegation для входа в SkyV ITAM не требуется. Проверяйте SSO в обычном профиле браузера на доменном устройстве: приватный режим может запросить логин и пароль операционной системы.

10. Восстановление пароля

Для локальных пользователей Keycloak включите Realm settings → Login → Forgot password и настройте SMTP realm. Проверьте отправку письма, срок действия ссылки, redirect URI и экран успешного завершения.

Пароли пользователей Active Directory обычно изменяются и восстанавливаются средствами организации. Если LDAP provider не допускает запись пароля, сообщите пользователю, куда обращаться, вместо попытки изменить доменный пароль через Keycloak.

11. Проверка

После настройки проверьте:

  1. Обычный переход на портал показывает парольный вход.
  2. Парольный пользователь успешно входит через itam-front.
  3. Кнопка SSO и /auth/sso используют itam-front-sso.
  4. Доменный пользователь на настроенном устройстве входит без формы.
  5. Пользователь без Kerberos-ticket получает парольную форму.
  6. Ошибка Kerberos не создаёт redirect loop.
  7. Оба способа входа возвращают одинаковые роли и полномочия.
  8. Remember Me работает с выбранной и невыбранной галочкой в заданных пределах.
  9. Logout завершает Keycloak-сессию и не вызывает автоматический повторный вход.
  10. Незарегистрированный redirect URI отклоняется.
  11. Восстановление пароля работает для локального пользователя, если включено.
  12. В логах и экспортированных файлах отсутствуют keytab и секреты.

Полную проверку Kerberos невозможно выполнить только с сервера: требуется доменное устройство, доменная учётная запись и применённые браузерные политики.

12. Типовые проблемы

Симптом Что проверить
Появляется системное окно логина allowlist браузера, обычный/приватный режим, DNS-имя и билет HTTP/<public-host>
Всегда открывается парольная форма SPN, keytab principal, время, доступность KDC, LDAP principal mapping
Циклические редиректы Kerberos = ALTERNATIVE, fallback Forms и client-level flow override
invalid_redirect_uri точное совпадение HTTPS redirect URI
SSO входит, но нет полномочий одинаковые scopes, mappers, roles и claims двух клиентов
Не видно Remember Me realm-параметр, тема и режим авторизации
Нет письма восстановления SMTP, Reset password, email пользователя и почтовые логи
После входа медленно загружается портал отдельно проверить прикладные API и обращения backend к Keycloak; это не обязательно задержка Kerberos

13. Откат

При проблеме:

  1. Верните режим без корпоративного SSO.
  2. Уберите itamSsoUrl, чтобы скрыть кнопку.
  3. Отключите itam-front-sso или его Browser Flow override.
  4. Верните предыдущую версию темы и сохранённый snapshot настроек.
  5. Не удаляйте LDAP provider и keytab до завершения диагностики.

Все изменения сначала проверяйте на тестовом стенде и выполняйте при наличии актуального backup.