Диагностика проблем
Для поиска и устранения неполадок последовательно выполните следующие шаги:
1. Проверка текущего пользователя (whoami)
Для проверки корректности настроек аутентификации и анализа передаваемых атрибутов пользователя выполните команду /whoami (см. п.1 статьи: Технические URL-запросы).
| Поле | Описание |
|---|---|
| Name | Отображаемое имя пользователя (значение атрибута UserNameClaim из токена) |
| Id / UserID | Уникальный идентификатор пользователя в системе — результат работы UserMatchAttribute из LDAP. Именно это значение нужно указывать в UsersEditions и ServerAdministratorsIds |
| TimeZone | Часовой пояс пользователя |
| Groups | Список групп, в которые входит пользователь. Его можно взять из атрибута токена UserRolesClaim |
| AdditionalUserProperties | Дополнительные атрибуты из CustomClaims (если они настроены) |
| IsSystemUser | Системный ли пользователь — для обычных пользователей значение всегда false |
Примечание: поля Id и UserID содержат одно и то же значение — идентификатор пользователя в системе.
2. Проверка LDAP-фильтра вручную
Зная значение UserID, можно вручную проверить корректность работы LDAP-фильтра и убедиться, что система находит нужного пользователя.
Проверка на Windows-машине (в домене)
Выполните команду в PowerShell:
Get-ADUser -Filter {userPrincipalName -eq "ivanov@company.ru"} -Properties objectSid, sAMAccountName
Проверка на Linux-машине
Используйте утилиту ldapsearch для выполнения команды:
ldapsearch -H ldap://ldap.company.ru \ -D "cn=bind_user,dc=company,dc=ru" \ -w "password" \ -b "dc=company,dc=ru" \ "(&(objectCategory=person)(objectClass=user)(userPrincipalName=ivanov@company.ru))" \ objectSid sAMAccountName
Если пользователь не найден:
- Проверьте базу поиска (
-b) — она должна охватывать организационное подразделение (OU), в котором физически находится учетная запись пользователя. - Проверьте учетные данные — убедитесь в корректности логина (
Login) и пароля (Password) для подключения к LDAP. - Проверьте синтаксис фильтра — подставьте значения вручную в строку поиска и убедитесь в отсутствии синтаксических ошибок.
3. Проверка итогового UserID через веб-интерфейс
После успешного входа пользователя в Business Studio его итоговый UserID можно проверить в справочнике «Пользователи». Значение в поле Логин должно в точности совпадать со значением атрибута UserMatchAttribute, полученным из LDAP.
Если пользователь создался с некорректным UserID — проверьте:
- Правильно ли указан
UserMatchAttributeи убедитесь, что такой атрибут присутствует в записи пользователя в AD. - Возвращает ли LDAP этот атрибут — в выводе ldapsearch он должен явно присутствовать. Если его нет, убедитесь, что учётная запись для LDAP-подключения имеет права на чтение этого атрибута в AD.
4. Проверка типовых ошибок
Воспользуйтесь Таблицей 2 ниже для диагностики и решения типовых проблем:
| Проблема | Как проявляется | Причина | Рекомендации по решению |
|---|---|---|---|
| Пользователь не создаётся при первом входе | Пользователь отсутствует в справочнике «Пользователи» после попытки входа; в логах сервиса bs-backend ошибка аутентификации | Токен не содержит поле из UserIdClaim; LDAP не находит пользователя | Проверить claims через /whoami; проверить LDAP-фильтр вручную |
| Создаётся новый пользователь вместо существующего | В справочнике «Пользователи» появилась дублирующая запись с другим UserID | UserMatchAttribute вернул другое значение; email изменился, а UserID был привязан к нему | UserMatchAttribute указывает на objectSid; скорректировать UserID в справочнике вручную |
| Ошибка SSL при подключении к LDAP | В логах bs-backend ошибка вида: «SSL handshake failed или certificate verify failed», при старте или при первом входе | Несоответствие между настройкой UseSsl и реальным протоколом сервера, либо проблема с сертификатами | Если сервер работает по LDAPS — установить UseSsl: true; если по обычному — LDAP: false |
| Права и лицензии не применяются | Пользователь успешно авторизуется, но не работает разграничение редакций (например, может редактировать данные, хотя должен иметь лицензию Viewer) или не применяются настройки прав (видит или редактирует данные, доступ к которым должен быть ограничен, и наоборот) | UserID в UsersEditions не совпадает с реальным UserID пользователя | Сверить UserID в /whoami со значением в UsersEditions; при расхождении скорректировать UsersEditions |
| Группа не распознаётся | В /whoami поле Groups пустое или не содержит ожидаемых групп; права, настроенные на группу, не применяются | Название группы в Keycloak не совпадает с именем в справочнике «Пользователи»; неверно настроен UserRolesClaim | Проверить /whoami — поле Groups; сверить с названиями групп в справочнике «Пользователи» |