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

Active Directory и SSO — Решение проблем

Аудитория: ТП 1-й линии (без доступа к БД)

Как пользоваться этим документом

Секции организованы по типам проблем. Для каждой: 1. Симптом — что описывает клиент 2. Что проверить — шаги диагностики 3. Решение — что сделать 4. Эскалация — когда передавать на 2-ю линию


1. Синхронизация с AD — ошибки и сбои

~50% обращений по теме. Самая частая проблема.

1.1 Автоматическая синхронизация с AD не работает

Симптом: «автоматическая синхронизация с AD не происходит», «ADSyncJob не работает».

Что проверить: - Настройки синхронизации — заполнены ли (Администрирование → Синхронизация) - Расписание — настроен ли интервал - Доступность AD-сервера — сетевая связность - Логи — текст ошибки ADSyncJob - Платформа — на PG ADSyncJob может не работать (известная проблема)

Эскалация: если настройки корректны, AD доступен, но синхронизация не идёт — передать на 2-ю линию.

1.2 Ошибки при настройке синхронизации AD

Симптом: «при настройке синхронизации AD возникают ошибки».

Что проверить: - Строка подключения — формат LDAP://domain:port - Учётная запись для подключения — достаточно ли прав - SSL/TLS — правильный ли порт (389 для LDAP, 636 для LDAPS) - Сертификат — доверенный ли (для LDAPS)

1.3 Учётные записи создаются без реквизитов (только SID)

Симптом: «при синхронизации с AD создаётся пользователь, но без реквизитов — только SID из AD».

Что проверить: - Маппинг атрибутов — заполнен ли (ФИО, email, должность и т.д.) - Расширенные настройки — настроен ли маппинг нужных AD-атрибутов на поля 1Ф - Логи — нет ли ошибок при чтении атрибутов

Эскалация: если маппинг настроен, но данные не заполняются — передать на 2-ю линию.

1.4 При выгрузке пользователя из AD — ошибка

Симптом: «при выгрузке (импорте) пользователя из AD — ошибка».

Что проверить: - Текст ошибки - Конкретный пользователь или все — если один, возможна проблема в его AD-атрибутах - Версия системы


2. Фильтры синхронизации AD

~20% обращений.

2.1 Фильтр пользователей/ОЕ не работает

Симптом: «не работает фильтр орг. единиц синхронизации», «не создаются пользователи при наличии фильтра».

Что проверить: - Синтаксис LDAP-фильтра — корректен ли - Результат фильтра — возвращает ли AD объекты при таком фильтре (проверить через ldapsearch / AD Explorer) - Формат — экранированы ли спецсимволы

2.2 Фильтр AD > 100 символов — ошибка

Симптом: «при создании фильтра на >100 символов в "AD фильтр пользователей" или "AD фильтр групп" — ошибка».

Решение: известное ограничение — поле в БД ограничено по длине. [2L]

Эскалация: если нужен длинный фильтр — передать на 2-ю линию для увеличения поля.


3. Расширенные настройки AD

~15% обращений. Повторяющаяся проблема.

3.1 Не добавляется новый AD-ключ в расширенные настройки

Симптом: «не работает добавление нового AD-ключа в расширенные настройки пользователя при настройке синка с AD».

Что проверить: - Версия системы — баг воспроизводится в нескольких версиях - Интерфейс — AdminSPA или старая админка

Эскалация: известный повторяющийся баг — передать на 2-ю линию с указанием версии.

3.2 Нет возможности забрать EmployeeID / EmployeeNumber из AD

Симптом: «нужно получить табельный номер из AD, но атрибуты EmployeeID / EmployeeNumber недоступны».

Решение: стандартный маппинг не включает эти атрибуты. Нужно добавить через расширенные настройки AD-синхронизации (если работает, см. 3.1) или через кастомный маппинг. [2L]


4. SSO / единый вход

4.1 Настройка SSO для Web и Desktop

Симптом: «как настроить SSO для веб-версии и десктоп-клиента?»

Решение: SSO настраивается через провайдер авторизации (OAuth, SAML, Kerberos). Для веба — стандартный redirect. Для десктоп-клиента — в зависимости от протокола (Kerberos через спецнастройку, SAML через встроенный браузер). Администрирование → Провайдеры авторизации.

4.2 2FA + SSO в доменной среде

Симптом: «хотим 2FA для внешнего доступа, но SSO по Kerberos для сотрудников в домене».

Решение: возможны комбинированные сценарии — Kerberos для внутренней сети, 2FA для внешней. Настройка через провайдеры + условия. [2L]

4.3 Некорректное отображение провайдера AD в AdminSPA

Симптом: «провайдер Active Directory отображается некорректно в AdminSPA».

Что проверить: - Версия системы - Наличие нескольких провайдеров

4.4 Kerberos на Linux (Kestrel/Docker) — диагностика

Контекст: с v2.268.302 1Форма поддерживает нативный Kerberos-handshake без IIS — через ASP.NET Core Negotiate в Kestrel. Применяется при разворачивании в Docker/Linux в доменной среде. Полная настройка — admin.md § Kerberos на Linux.

Симптом 1: «SSO не работает на Linux-стенде, пользователь получает popup ввода пароля или 401».

Что проверить:

  1. Статус приложенияGET /api/admin/auth/kerberos/status (требует прав администратора). Должно быть winAuthHost = "Kestrel" и negotiateSchemeRegistered = true. Если winAuthHost = "None" — Windows-auth выключена в appsettings.json, нужно проставить Auth:WinAuthHost = "Kestrel".
  2. Инфраструктура контейнера — установлена библиотека libgssapi-krb5-2, существует keytab с SPN вида HTTP/<hostname>@REALM, переменная KRB5_KTNAME указывает на keytab.
  3. DNS и SPN — клиент резолвит сервер по FQDN, для которого создан SPN; PTR-запись соответствует прямой записи. Без этого Windows-клиент молча даунгрейдит SPNEGO в NTLM.
  4. Браузер клиента — адрес сервера в Local Intranet / Trusted Sites (для IE/Edge), Negotiate включён.

Симптом 2: «Включил RequireKerberos: true — пользователи перестали входить, в логе NTLM authentication rejected».

Что произошло: WinClaimsTransformation отклонил вход, потому что фактический протокол — NTLM, а не Kerberos. Это ожидаемое поведение настройки.

Что проверить через SQL — какой протокол реально использовался при последних попытках:

select top 20
    l.LoginDate, u.Nick, l.AuthProtocol, l.UserComputerName, l.IP
from LoginsLog l
left join Users u on u.UserID = l.UserID
where l.LoginDate > dateadd(hour, -1, getdate())
order by l.LoginDate desc;

Если в AuthProtocol массово NTLM — Kerberos-handshake не получается ни у одного клиента, причина в инфраструктуре (см. пункты 2–4 выше), а не в одном пользователе. До устранения — Auth:RequireKerberos: false, чтобы NTLM-вход работал.

Симптом 3: «Endpoint статуса возвращает negotiateSchemeRegistered = false, хотя winAuthHost = "Kestrel"».

Приложение стартовало без Windows-auth — auth.AddNegotiate() не вызывался. Причина обычно в appsettings.{Environment}.json или env-override, который перекрывает Auth:WinAuthHost. Перезапустить приложение после исправления, повторить статус-чек.

Эскалация: при инфраструктурных проблемах (keytab, SPN, KDC) — на администратора Linux/AD. Платформа handshake не делает, только использует результат ASP.NET Core Negotiate. [2L]


5. LDAP / LDAPS

5.1 Переход с LDAP на LDAPS

Симптом: «нужно перейти с LDAP (389) на LDAPS (636)».

Решение: 1. Убедиться, что сертификат LDAP-сервера доверенный (или добавить в trust store) 2. Изменить строку подключения: порт 389 → 636, протокол LDAP → LDAPS 3. Проверить синхронизацию после изменения

Эскалация: если после смены порта/протокола синхронизация не работает — проблема с сертификатом. [2L]


6. Пользователи из AD — управление

6.1 Нельзя редактировать пользователей, импортированных из AD

Симптом: «не удаётся редактировать информацию о пользователе, синхронизированном из AD».

Решение: ожидаемое поведение — поля, маппированные из AD, блокируются для ручного редактирования. Изменения нужно делать в AD и пересинхронизировать. Для полей, не маппированных из AD, редактирование доступно.

6.2 Где в AdminSPA видны юниты из AD

Симптом: «где в новой админке видны орг. единицы, засинкованные из AD?»

Решение: Администрирование → Синхронизация → вкладка «Организационные единицы». В AdminSPA — раздел Пользователи → фильтр по источнику.

6.3 Смена пароля при доменной авторизации

Симптом: «как сменить пароль пользователя, если настроена доменная авторизация?»

Решение: при доменной авторизации пароль меняется в Active Directory, не в 1Ф. В 1Ф пароль для таких пользователей не хранится.


Чеклист для первичной диагностики

  1. Тип проблемы — синхронизация, фильтры, расширенные настройки, SSO, LDAP, управление пользователями
  2. Тип подключения — AD (LDAP), AD (LDAPS), SAML, OAuth, Kerberos
  3. Платформа БД — MS SQL или PostgreSQL (PG имеет ограничения ADSyncJob)
  4. Версия системы
  5. Интерфейс — AdminSPA или старая админка
  6. Текст ошибки из лога
  7. Количество пользователей / ОЕ в AD — влияет на производительность синка

Когда эскалировать

  • ADSyncJob не работает на PG (известная проблема)
  • Не добавляется AD-ключ в расширенные настройки (повторяющийся баг)
  • Фильтр >100 символов не сохраняется (ограничение поля)
  • Пользователи создаются без реквизитов при корректном маппинге (баг)
  • Проблемы с сертификатами LDAPS
  • Настройка комбинированного SSO + 2FA