Как открыть веб-клиент 1С минуя стандартное окно авторизации с помощью собственной формы входа?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При интеграции 1С с корпоративными порталами, личными кабинетами или сайтами часто возникает задача заменить типовой диалог авторизации платформы на собственную веб-форму. Пользователь должен ввести учетные данные на сторонней веб-странице, после чего должен запуститься полнофункциональный сеанс веб-клиента без повторного запроса логина и пароля. Рассмотрим подробнее, как работает этот механизм, разберем типовые ошибки при формировании запроса и проанализируем нюансы безопасности.

Базовый механизм: отправка POST-запроса на адрес e1cib/start

Типовая попытка передать учетные данные через параметры адресной строки в формате GET (например, ?N=Пользователь&P=Пароль) не решает задачу надежно. В современных версиях платформы передача паролей в открытом URL заблокирована в целях безопасности. Кроме того, такой URL сохраняется в истории браузера и журналах веб-сервера.

Штатный механизм платформы «1С:Предприятие 8.3» предусматривает запуск веб-клиента с помощью отправки HTML-формы методом POST на внутреннюю точку входа e1cib/start. Если отправить запрос на корневой адрес публикации базы данных без указания e1cib/start, платформа проигнорирует переданные параметры формы и выведет стандартное модальное окно авторизации.

Разберем по шагам структуру простейшей HTML-страницы, которая передает параметры в 1С:


<form action="https://myserver.ru/mybase/ru_RU/e1cib/start" method="post">
    <label for="usr">Пользователь:</label>
    <input type="text" id="usr" name="usr" required>

    <label for="pwd">Пароль:</label>
    <input type="password" id="pwd" name="pwd">

    <input type="submit" value="Войти в систему">
</form>

Посмотрим на параметры, принимаемые точкой входа платформы:

  1. action — полный URL опубликованной базы данных с обязательным добавлением суффикса e1cib/start. Если необходимо запустить интерфейс на конкретном языке, в путь включается код локализации, например /ru_RU/e1cib/start.
  2. usr — имя пользователя информационной базы (соответствует имени пользователя в конфигураторе или в справочнике пользователей).
  3. pwd — пароль пользователя в открытом виде (шифрование обеспечивается протоколом HTTPS на транспортном уровне).

Работа с разделением данных и скрытыми параметрами запуска

Если в информационной базе используется разделение данных (облачный режим работы или сервис аренды), для входа в нужную область необходимо передавать номер области данных. В платформе 1С за это отвечает параметр zone.

Разберем практическую задачу: когда номер области данных пользователя совпадает с его логином. Чтобы пользователю не приходилось заполнять два одинаковых поля, значение можно автоматически дублировать с помощью простого JavaScript-обработчика, скрыв поле области из видимости.


<form id="authForm" action="https://myserver.ru/mybase/ru_RU/e1cib/start" method="post">
    <label for="usr">Логин:</label>
    <input type="text" id="usr" name="usr" oninput="document.getElementById('zone').value = this.value;" required>

    <label for="pwd">Пароль:</label>
    <input type="password" id="pwd" name="pwd">

    <input type="hidden" id="zone" name="zone" value="">

    <input type="submit" value="Войти">
</form>

Платформа также поддерживает передачу вспомогательных сервисных параметров через поля формы:

  1. CnnPrf — режим низкой скорости соединения (принимает значение Low).
  2. OvrPrf — параметр запуска конфигурации (соответствует ключу /C запуска толстого или тонкого клиента).
  3. L — код языка интерфейса (например, ru или en).
  4. VL — код локализации сеанса.

Вариант с валидацией через собственный HTTP-сервис 1С

Главный недостаток прямой отправки формы на e1cib/start заключается в том, что в случае ввода неверного логина или пароля платформа перенаправляет пользователя на стандартное окно ошибки или интерфейс ввода учетных данных 1С. Если требуется оставить пользователя в рамках дизайна внешнего сайта и вывести сообщение о неверном пароле, разработчики используют предварительную проверку через собственный HTTP-сервис.

Проанализируем архитектуру этого решения:

  1. Браузер отправляет AJAX-запрос с логином и паролем на созданный в конфигурации HTTP-сервис 1С.
  2. Внутри метода сервиса 1С выполняет аутентификацию. Для проверки соответствия пароля используется обращение к менеджеру ПользователиИнформационнойБазы либо вызовы специализированных функций Библиотеки стандартных подсистем (БСП).
  3. Если пароль неверен, HTTP-сервис возвращает структурированный ответ с кодом 401 или JSON с текстом ошибки, который скрипт сайта красиво отображает пользователю.
  4. Если проверка прошла успешно, сервис возвращает клиенту страницу или скрипт с автоматической отправкой формы на e1cib/start.

Пример генерации автоматического перехода на стороне клиента при успешной валидации:


<form id="redirectForm" action="https://myserver.ru/mybase/ru_RU/e1cib/start" method="post">
    <input type="hidden" name="usr" value="ИванИванов">
    <input type="hidden" name="pwd" value="SecretPass123">
</form>
<script>
    document.getElementById("redirectForm").submit();
</script>

Важное архитектурное ограничение: HTTP-сервис 1С работает в изолированном серверном сеансе. Он не может «превратить» свой сеанс в пользовательский веб-клиент. Веб-клиент всегда инициирует отдельную сессию браузера со своим набором сессионных cookie платформы.

Безопасность и браузерные ограничения

При реализации сквозного входа через форму необходимо учитывать следующие требования безопасности и сетевые правила:

  1. Обязательное использование HTTPS. Так как форма передает пароль методом POST, передача данных по незашифрованному протоколу HTTP недопустима. Только SSL/TLS-сертификат защищает учетные данные от перехвата в сети.
  2. Политика SameSite для файлов cookie. Если форма авторизации расположена на одном домене (например, site.ru), а публикация 1С — на другом домене или поддомене (например, 1c.site.ru), браузеры со строгими политиками безопасности могут заблокировать сохранение сессионных cookie платформы при кросс-доменном POST-запросе. Рекомендуется размещать форму авторизации и публикацию веб-клиента в рамках одного источника либо настраивать проксирование через Nginx/Apache.
  3. Запрет фреймов. Если планируется открывать веб-клиент внутри тега <iframe> на сайте, сеанс может быть заблокирован механизмом защиты от кликджекинга. По умолчанию веб-серверы 1С выставляют заголовок X-Frame-Options: SAMEORIGIN. Для встраивания во внешний портал необходимо скорректировать заголовки ответа веб-сервера.

Альтернативное enterprise-решение: OpenID / OpenID Connect

Для промышленных систем ручная передача логинов и паролей через скрытые HTML-формы считается устаревшим подходом. Наиболее безопасным и поддерживаемым способом является настройка аутентификации через протокол OpenID или OpenID Connect:

  1. Внешний сайт или корпоративный провайдер идентификации (например, Keycloak) берет на себя регистрацию, смену паролей и подтверждение учетных данных.
  2. В файле публикации default.vrd настраивается тег <openid>, связывающий 1С с сервером авторизации.
  3. В файле default.vrd атрибут enableStandardAuthentication устанавливается в значение false. Это полностью отключает встроенное окно ввода логина и пароля платформы.
  4. При переходе по ссылке веб-клиента платформа выполняет прозрачный редирект на провайдер OpenID, получает подписанный токен и открывает сеанс пользователя без передачи открытых паролей в браузер.
← На главную