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
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-клиентами
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 обычного и корпоративного входа
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 и сроков длительной сессии
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 должен:
- Создать или выделить отдельную service account.
- Зарегистрировать для неё SPN
HTTP/<public-host>и убедиться, что такой SPN не назначен другой учётной записи. - Выпустить keytab для principal
HTTP/<public-host>@<KERBEROS_REALM>с типами шифрования, разрешёнными политикой организации; для новых установок рекомендуется AES. - Проверить, что principal в keytab в точности совпадает с Server principal в Keycloak.
- Передать 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. Проверка
После настройки проверьте:
- Обычный переход на портал показывает парольный вход.
- Парольный пользователь успешно входит через
itam-front. - Кнопка SSO и
/auth/ssoиспользуютitam-front-sso. - Доменный пользователь на настроенном устройстве входит без формы.
- Пользователь без Kerberos-ticket получает парольную форму.
- Ошибка Kerberos не создаёт redirect loop.
- Оба способа входа возвращают одинаковые роли и полномочия.
- Remember Me работает с выбранной и невыбранной галочкой в заданных пределах.
- Logout завершает Keycloak-сессию и не вызывает автоматический повторный вход.
- Незарегистрированный redirect URI отклоняется.
- Восстановление пароля работает для локального пользователя, если включено.
- В логах и экспортированных файлах отсутствуют 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. Откат
При проблеме:
- Верните режим без корпоративного SSO.
- Уберите
itamSsoUrl, чтобы скрыть кнопку. - Отключите
itam-front-ssoили его Browser Flow override. - Верните предыдущую версию темы и сохранённый snapshot настроек.
- Не удаляйте LDAP provider и keytab до завершения диагностики.
Все изменения сначала проверяйте на тестовом стенде и выполняйте при наличии актуального backup.