При публикации информационной базы 1С:Предприятие на веб-сервере (Apache или IIS) администраторы нередко сталкиваются с ситуацией: при открытии базы через браузер окно авторизации предлагает ввести логин и пароль вручную, а выпадающий список пользователей пуст. В диалоге публикации конфигуратора специальные переключатели для видимости списка отсутствуют, поэтому разберем причины такого поведения платформы и детальные шаги по устранению неполадки.
Проанализируем механику работы платформы и типовых конфигураций на базе Библиотеки стандартных подсистем (БСП), таких как «1С:Управление торговлей 11»:
Пользователи и в системной таблице платформы ПользователиИнформационнойБазы. За видимость имени в окне аутентификации отвечает свойство ПоказыватьВСпискеВыбора. Если карточка пользователя редактировалась напрямую через конфигуратор или произошел сбой фоновой синхронизации, состояние реквизита в справочнике и системного свойства учетной записи платформы может не совпадать.ИспользоватьВнешнихПользователей (доступ внешних пользователей) приводит к автоматическому программному снятию флага показа в списке выбора у существующих учетных записей. Это делается из соображений безопасности. При последующем отключении опции признаки отображения автоматически назад не возвращаются.e1cib/users. Если этот запрос блокируется модулями безопасности веб-сервера, фильтрацией URL или кешируется браузером в некорректном состоянии, список будет пустым.Самое быстрое решение проблемы для конкретных пользователей — принудительная перезапись свойства в пользовательском интерфейсе:
Посмотрим на результат: такое интерактивное переключение инициирует синхронизацию справочника с системным объектом платформы, жестко устанавливая свойство ПользовательИнформационнойБазы.ПоказыватьВСпискеВыбора = Истина.
Выясним причину массового скрытия пользователей, проверив общие параметры системы:
Когда пользователей в базе много, перещелкивать флаг вручную неэффективно. Разберем пример кода для внешней обработки или консоли кода, который восстанавливает свойство ПоказыватьВСпискеВыбора для всех внутренних пользователей информационной базы:
Выборка = ПользователиИнформационнойБазы.ПолучитьПользователей();
Для Каждого ТекПользователь Из Выборка Цикл
// Исключаем системные и служебные учетные записи при необходимости
Если Не ТекПользователь.ПоказыватьВСпискеВыбора Тогда
ТекПользователь.ПоказыватьВСпискеВыбора = Истина;
Попытка
ТекПользователь.Записать();
Исключение
Сообщить("Ошибка записи пользователя: " + ТекПользователь.Имя + " - " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
После выполнения данного скрипта системные учетные записи получают признак показа, и окно входа веб-клиента начинает выводить их в выпадающем меню.
Если после обновления флагов список в тонком клиенте отображается, а в веб-браузере по-прежнему пуст, выполним следующие технические шаги:
default.vrd) и правила фильтрации трафика. Убедимся, что правила межсетевого экрана или веб-сервера не блокируют обращения к эндпоинту e1cib/users.Обратим внимание на важный аспект информационной безопасности: вывод открытого списка пользователей в веб-клиенте, доступном через сеть Интернет, является серьезной уязвимостью класса User Enumeration (перечисление учетных записей). Злоумышленники сразу получают готовый список логинов сотрудников компании для проведения атак методом подбора паролей (brute force). Если база данных опубликована наружу, рекомендуется намеренно отключать отображение списка пользователей, оставляя ввод логина исключительно ручным.