Как создать собственное окно авторизации и саморегистрации для веб-клиента 1С?

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

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

Понимание архитектуры: куда вставлять код?

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

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

  1. Создается отдельная веб-страница (на HTML/PHP/JS), которая выступает порталом авторизации.
  2. Пользователь заходит на этот портал и вводит свои учетные данные.
  3. Внешний сайт отправляет запрос к опубликованной базе 1С, открывает сессию и пробрасывает пользователя в веб-клиент.

Простая авторизация через параметры (GET и POST)

Проанализируем базовый способ передачи учетных данных. Самый простой (но наименее безопасный) вариант — передача логина и пароля прямо в строке браузера через GET-запрос. Выглядит это следующим образом:

http://server/base_name/ru_RU/?N=user&P=password

Где server — адрес вашего сервера, base_name — имя опубликованной базы, N — логин, а P — пароль. Однако использовать этот метод в рабочей среде категорически не рекомендуется: пароли сохраняются в истории браузера и логах веб-сервера.

Посмотрим на более правильный подход. Внешний скрипт (например, на PHP) должен формировать скрытый POST-запрос на адрес публикации веб-клиента 1С. Форма на сайте принимает данные, а затем скрипт отправляет POST-запрос с параметрами авторизации и выполняет редирект пользователя в уже запущенный сеанс, минуя стандартное окно.

Реализация регистрации и восстановления пароля через HTTP-сервисы

Если мы хотим, чтобы пользователи регистрировались самостоятельно, нам потребуется написать собственный API на стороне 1С. Рассмотрим, как это сделать через HTTPСервисы.

Разберем по шагам процесс регистрации:

  1. На внешнем сайте создается форма с полями: ФИО, Email, Телефон.
  2. При нажатии на кнопку "Зарегистрироваться" сайт отправляет JSON-данные POST-запросом на ваш HTTP-сервис в 1С (например, по адресу /hs/custom_auth/register).
  3. Внутри 1С метод HTTP-сервиса принимает запрос. В привилегированном модуле мы программно создаем пользователя:
    
    НовыйПользователь = ПользователиИнформационнойБазы.СоздатьПользователя();
    НовыйПользователь.Имя = ДанныеСайта.Логин;
    НовыйПользователь.Пароль = СгенерироватьСлучайныйПароль();
    НовыйПользователь.ПоказыватьВСпискеВыбора = Ложь;
    НовыйПользователь.Записать();
    
  4. 1С настраивает права для нового пользователя, отправляет ему сгенерированный пароль (по SMS или на почту) и возвращает внешнему сайту успешный HTTP-ответ (статус 200).

Восстановление пароля реализуется аналогично. Сайт "стучится" в HTTP-сервис 1С, передавая Email. 1С проверяет наличие пользователя, генерирует код подтверждения и, после проверки, программно устанавливает новый пароль.

Современная альтернатива: OpenID Connect (OIDC) и SSO

Проанализируем более современный и безопасный подход, который поддерживается платформой 1С, начиная с версий 8.3.14. Вместо того чтобы писать самописные страницы на PHP и костыли с POST-запросами, лучше использовать стандарт OpenID Connect (OIDC) для сквозной авторизации.

Для этого мы разворачиваем готовый сервер авторизации (Identity Provider), такой как Keycloak или Authentik, и связываем его с 1С через файл публикации default.vrd.

Как это работает для пользователя:

  1. При попытке зайти в веб-клиент 1С платформа перенаправляет его на красивую страницу провайдера авторизации (например, Keycloak).
  2. В этих системах функционал регистрации, восстановления пароля и подтверждения почты уже встроен "из коробки". Нам не нужно программировать это вручную.
  3. После успешной аутентификации Keycloak возвращает токен в 1С, и платформа пускает пользователя в базу (сопоставление обычно идет по полю Email в карточке пользователя).

Вопросы безопасности и лицензирования

Разберем важные нюансы, о которых нельзя забывать при проектировании.

Многофакторная аутентификация (2FA): Современная платформа 1С поддерживает провайдеры второго фактора. При использовании OIDC или встроенных механизмов 2FA, после ввода пароля появится окно для ввода одноразового кода (из SMS или приложения-аутентификатора).

Экономия лицензий: При использовании HTTP-сервисов для процессов регистрации и восстановления паролей мы экономим лицензии. Вызов HTTP-сервиса — это быстрая транзакция, которая занимает клиентскую лицензию 1С лишь на доли секунды. В отличие от этого, полноценно запущенный через веб-клиент сеанс будет удерживать лицензию все время работы пользователя в базе.

Таким образом, для создания собственного окна авторизации вы можете пойти путем написания своего веб-портала и связки его с 1С через HTTP-сервисы, либо использовать современные провайдеры SSO. Второй вариант предпочтительнее для безопасности и минимизации разработки нестандартного кода.

← На главную