Диагностика и типовые ошибки
В статье собраны типовые ошибки при интеграции Webim с Active Directory и рекомендации по диагностике.
-
проблемы Kerberos и SSO
-
ошибки, связанные с keytab и SPN
-
проблемы подключения к LDAP и поиска пользователей
-
ошибки, связанные с режимами авторизации
-
ошибки валидации операторов и данных из Active Directory
-
проблемы ручной и периодической синхронизации
Где смотреть
Логи Webim
Для диагностики обычно достаточно логов:
-
Admin Backend (SSO и синхронизация операторов)
-
системных логов ОС (время/NTP, сеть, TLS)
-
при необходимости — логов инфраструктуры (Kafka, контроллер домена)
Docker / Docker Compose
-
Логи контейнера Admin Backend:
docker logs <admin_backend_container> --tail=200 docker logs <admin_backend_container> -f -
В docker compose:
docker compose logs -f --tail=200 <service_name>
Установка на сервер
В установках Webim часто используются логи в каталоге /var/log/pro/ (например, /var/log/pro/tornado-*.log):
tail -n 200 /var/log/pro/<имя_лога>.log
tail -f /var/log/pro/<имя_лога>.log
История действий
История действий (action log) фиксирует ключевые события и изменения в аккаунте (в том числе административные действия и ошибки операций). См. статью История действий (action log).
Логи домена и ОС
Дополнительно используются:
-
журнал безопасности/системный журнал на контроллере домена (Kerberos, SPN, учетные записи)
-
системные логи на сервере Webim (NTP, сеть, TLS/сертификаты)
SSO и Kerberos
Важно
Настройка доменных политик и браузеров (зоны безопасности, разрешения Kerberos/Negotiate, ограничения NTLM) зависит от инфраструктуры компании и находится вне рамок документации Webim. Со стороны Webim задача диагностики — определить, что именно приходит на сервер и какая ошибка фиксируется в логах.
Браузер просит логин и пароль
Симптомы
-
автоматическая аутентификация не происходит
-
появляется диалог ввода логина/пароля
-
в логах нет признаков успешной обработки Kerberos-билета
Причины
-
браузер не настроен на Integrated Windows Authentication (Kerberos/Negotiate)
-
клиент отправляет не Kerberos (например, NTLM)
Как проверить
-
Проверьте логи Admin Backend на ошибки Kerberos/GSSAPI.
-
Если в параметре
kerberos_ticketвидно значение, похожее на NTLM (часто начинается сTlRMTVNT...), значит, Kerberos не используется.
Как решить
-
Добавьте домен Webim в список доверенных для Kerberos/Negotiate (whitelist/Trusted sites — в зависимости от браузера и политики компании).
-
Убедитесь, что доступ к Webim выполняется по FQDN, для которого настроен SPN.
GSS error
Симптомы
В логах Webim встречаются сообщения вида:
GSS error: GSSError(('An unsupported mechanism was requested', ...))
Причины
-
клиент отправляет не Kerberos (например, NTLM)
-
Kerberos запрещён политиками домена/зоны
Пример логов
[W 250826 14:54:05 +0300 access_log:35] 401 "GET /api/auth/v1/w/sso-signin HTTP/1.0" (X-Account-Name: accountname) (X-Real-Ip: 192.168.110.151) (Remote: 172.195.0.100) (Time: 0.010437)
[E 250826 14:54:50 +0300 service:78] GSS error: GSSError(('An unsupported mechanism was requested', 65536), ('Unknown error', 0))
[E 250826 14:54:50 +0300 access_log:35] 500 "GET /internal/admin-backend/sso/get-user-entry?kerberos_ticket=TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAKAGNFAAAADw%3D%3D HTTP/1.0" (X-Account-Name: accountname) (X-Real-Ip: 172.195.0.7) (Remote: 172.195.0.100) (Time: 0.003138)
[W 250826 14:54:50 +0300 access_log:35] 403 "GET /api/auth/v1/w/sso-signin HTTP/1.0" (X-Account-Name: accountname) (X-Real-Ip: 192.168.110.151) (Remote: 172.195.0.100) (Time: 0.011826)
Как проверить
-
Убедитесь, что браузер настроен на Kerberos/Negotiate для домена, на котором открыт Webim.
-
Убедитесь, что для домена Webim корректно настроен SPN (см. раздел про SPN).
Как решить
-
Настройте браузер так, чтобы он отправлял Kerberos-ticket для домена Webim.
-
Если Kerberos запрещён политиками, согласуйте изменение политик или используйте режим
sso_and_common_auth, чтобы оставить запасной вход по логину/паролю.
Время и NTP
Симптомы
-
Kerberos-аутентификация не проходит
-
ошибки Kerberos воспроизводятся нестабильно
Причины
- рассинхронизация времени между сервером Webim и контроллером домена
Как проверить
-
Сравните время и часовой пояс на сервере Webim и на контроллере домена.
-
Проверьте состояние NTP и ошибки синхронизации.
Как решить
-
Настройте синхронизацию времени (NTP) на сервере Webim.
-
Убедитесь, что сервер Webim и контроллер домена синхронизируются с согласованными источниками времени.
Keytab и SPN
KVNO или enctype
Симптомы
-
SSO не работает
-
в логах есть ошибки расшифровки ticket, KVNO или тип шифрования
Причины
-
KVNO изменился на стороне AD, а keytab на сервере Webim не обновили
-
в keytab нет записи с нужным типом шифрования для актуального KVNO
Пример логов
Failed to decrypt AP-REQ ticket: -1765328340/Request ticket server HTTP/docker-[hosted.site.ru@WEBIM.LOCAL](mailto:hosted.site.ru@WEBIM.LOCAL) kvno 14 found in keytab but not with enctype rc4-hmac
Как проверить
-
Проверьте содержимое keytab на сервере Webim:
klist -kKe /etc/webim/krb5.keytab -
Проверьте наличие принципала
HTTP/<FQDN>@<REALM>и актуальность KVNO.
Как решить
-
Пересоздайте keytab на стороне AD.
-
Обновите файл keytab на сервере Webim.
-
Убедитесь, что keytab содержит ключи для алгоритмов, разрешённых политиками домена (например, rc4-hmac и/или aes256).
SPN или realm
Симптомы
-
Kerberos-ticket не принимается сервером
-
SSO работает только по одному адресу, а по другому — нет
Причины
-
SPN привязан к другой учетной записи
-
в keytab другой принципал (не совпадает с тем, что использует клиент)
-
неверно задан default_realm
Как проверить
-
Проверьте SPN в домене (через
setspnили инструменты AD). -
Проверьте принципалы в keytab:
klist -kKe /etc/webim/krb5.keytab -
Проверьте
default_realmи блок[realms]в/etc/webim/krb5.conf.
Как решить
-
Исправьте SPN так, чтобы он соответствовал FQDN, по которому открывается Webim.
-
Пересоздайте keytab под правильный принципал и обновите его на сервере Webim.
-
Исправьте настройки realm в
krb5.conf.
LDAP
Нет подключения
Симптомы
- тайм-ауты, отказ в подключении, TLS-ошибки
Причины
-
неверный URL/порт
-
сетевые ограничения
-
при LDAPS — недоверенный сертификат контроллера домена на сервере Webim
Как проверить
-
Проверьте доступность хоста/порта с сервера Webim:
nc -zv <ldap_host> <port> -
Проверьте значения
ldap.urlи параметры SSL (если используется LDAPS).
Как решить
-
Исправьте URL/порт в настройках LDAP.
-
Настройте маршрутизацию/правила FW.
-
При LDAPS добавьте CA сертификата в доверенные на сервере Webim.
Пользователь не найден
Симптомы
- в логах: пользователь не найден по имени
Причины
-
пользователь вне области поиска
ldap.search_base -
у пользователя не заполнен
sAMAccountName
Пример логов
[E 250825 18:43:11 +0300 service:132] User not found; username=Администратор
Как проверить
-
Проверьте
ldap.search_base— он должен включать OU, где находятся пользователи. -
Убедитесь, что у пользователя заполнен
sAMAccountName.
Как решить
-
Исправьте
ldap.search_base. -
Заполните или исправьте
sAMAccountNameв AD.
Группы не совпадают
Симптомы
- пользователь входит, но роли/права не назначаются
Причины
-
ошибка в
ldap.security_group_pattern -
неверный
ldap.security_group_attributeили атрибут не заполнен
Как проверить
-
Сравните DN групп, которые приходят в
memberOf, с тем, что формируетldap.security_group_pattern. -
Учитывайте регистр и формат DN (строковое сравнение должно совпадать полностью).
Как решить
-
Исправьте
ldap.security_group_patternтак, чтобы он формировал DN в том же виде, как возвращает AD. -
Исправьте
ldap.security_group_attribute(обычноmemberOf).
Режимы входа
SSO выключен
Симптомы
- на странице входа нет SSO или он не запускается
Причины
-
sso.enabled = false -
sso.auth_mode = only_common_auth
Как проверить
-
Проверьте настройки SSO в account-config.
-
Проверьте
sso.auth_mode.
Как решить
-
Включите
sso.enabled. -
Установите
sso.auth_modeвonly_ssoилиsso_and_common_auth.
Оператор не допускается к SSO
Симптомы
- SSO включён, но конкретный оператор не входит
Причины
-
у оператора выключен
sso.allow_sso -
не задан
sso_username
Как проверить
-
В карточке оператора (вкладка настроек SSO) проверьте:
-
sso.allow_sso -
sso_username
-
Как решить
-
Включите
sso.allow_ssoдля оператора. -
Заполните
sso_usernameзначением, соответствующимsAMAccountNameв AD.
Валидация оператора
sso_bad_request
Симптомы
-
при создании/обновлении оператора через SSO возвращается 400
-
в логах есть ошибки валидации полей
Причины
-
из AD приходят неполные или некорректные данные (например, нет имени)
-
email некорректный или конфликтует с существующим оператором
Пример логов
[W 250901 18:44:52 +0300 service:620] Validating name; Value: None ; Type: <class 'NoneType'>
[W 250901 18:44:52 +0300 service:620] Validating email; Value: [test@test.ru](mailto:test@test.ru) ; Type: <class 'str'>
[W 250901 18:44:52 +0300 access_log:35] 400 "PUT /internal/admin-backend/sso/agents/8 HTTP/1.0" (X-Account-Name: accountname) (X-Real-Ip: 172.195.0.5) (Remote: 172.195.0.100) (Time: 0.002736)
[W 250901 18:44:52 +0300 service:64] SSOAgentService: Validation error: {'code': 'agent_validation_error', 'attributes': {'fields_errors': {'name': [{'rule': 'has_suitable_type', 'attributes': None}]}}}
Как проверить
-
Проверьте, что в AD заполнены
displayNameиmail. -
Проверьте, что email уникален среди операторов Webim.
Как решить
-
Заполните/исправьте данные пользователя в AD.
-
Устраните дубликаты email в Webim или исправьте email в AD.
Синхронизация
Не работает периодическая
Симптомы
- изменения в AD не отражаются в Webim
Причины
-
sso.enable_periodic_synchronization = false -
Kafka не настроена/недоступна
-
Admin Backend запущен без
--kafka-connection
Как проверить
-
В account-config проверьте
sso.enable_periodic_synchronization. -
Проверьте параметры запуска Admin Backend: есть ли
--kafka-connection=<connection_name>. -
Проверьте
/etc/webim/kafka.jsonи наличие соединения<connection_name>.
Как решить
-
Включите
sso.enable_periodic_synchronization. -
Настройте Kafka и соединение в
/etc/webim/kafka.json. -
Перезапустите Admin Backend с параметром
--kafka-connection.
Ошибка Sync data with Active Directory
Симптомы
-
при нажатии Sync появляется ошибка
-
в логах есть traceback обработки запроса
Причины
- не задано подключение к Kafka, поэтому синхронизация не может быть поставлена в очередь
Пример логов
[E 250721 11:43:22 +0300 exception_handler:63] Request processing failed with exception
Traceback (most recent call last):
File "/opt/webim/envs/eta/admin_backend/lib/python3.10/site-packages/admin_backend/entrypoints/web/root/middlewares/exception_handler.py", line 35, in _catch_agent_api_exceptions
return await handler(request)
File "/opt/webim/envs/eta/admin_backend/lib/python3.10/site-packages/admin_backend/entrypoints/web/root/middlewares/extract_request_data.py", line 39, in extract_request_data
response = await handler(request)
File "/opt/webim/envs/eta/admin_backend/lib/python3.10/site-packages/admin_backend/entrypoints/web/root/middlewares/prepare_context.py", line 107, in **call**
return await handler(request)
File "/opt/webim/envs/eta/admin_backend/lib/python3.10/site-packages/admin_backend/entrypoints/web/root/shared/middlewares/default_headers.py", line 20, in **call**
response = await handler(request)
File "/opt/webim/envs/eta/admin_backend/lib/python3.10/site-packages/admin_backend/entrypoints/web/root/middlewares/redirect_to_login_domain.py", line 44, in **call**
return await handler(request)
File "/opt/webim/envs/eta/admin_backend/lib/python3.10/site-packages/aiohttp/web_middlewares.py", line 117, in impl
return await handler(request)
Как проверить
-
Проверьте, что Admin Backend запущен с
--kafka-connection=<connection_name>. -
Проверьте, что
/etc/webim/kafka.jsonсодержит соединение<connection_name>. -
Проверьте доступность Kafka с хоста/контейнера Admin Backend.
Как решить
-
Настройте Kafka и файл
/etc/webim/kafka.json. -
Перезапустите Admin Backend с корректным
--kafka-connection. -
Повторите Sync.