При переходе на удаленную работу или при необходимости предоставить доступ к базе данных внешним пользователям часто возникает вопрос публикации базы 1С на веб-сервере. В процессе настройки системные администраторы часто сталкиваются с неочевидным поведением системы защиты 1С. Например, типичная ситуация: на сервере установлена лицензия на сам сервер, а пользовательские клиентские лицензии активированы локально на компьютерах сотрудников. Будут ли внешние клиенты получать эти лицензии при подключении через веб-сервер?
В этой статье мы подробно разберем, как именно функционирует механизм лицензирования 1С при работе через веб-сервер, проанализируем разницу между тонким и веб-клиентом, а также рассмотрим особенности раздачи лицензий для файловых и клиент-серверных баз данных.
Для того чтобы понять, получит ли пользователь лицензию, нам необходимо четко разделить два способа подключения к веб-серверу: через Тонкий клиент 1С и через обычный Интернет-браузер (Веб-клиент). Логика поиска ключей защиты в этих случаях кардинально отличается.
Рассмотрим подробнее каждый из вариантов:
Когда пользователь открывает базу 1С в браузере (Google Chrome, Яндекс.Браузер, Mozilla Firefox и т.д.), он работает в изолированной среде («песочнице»). Браузер по соображениям безопасности не имеет доступа к оборудованию локального компьютера. Он не может обратиться к USB-портам, чтобы найти аппаратный ключ HASP, и не имеет доступа к файловой системе для чтения файлов программных лицензий с расширением .lic.
Отсюда следует жесткое правило: при работе через веб-клиент лицензию всегда должен предоставить сервер. Если на стороне веб-сервера или сервера приложений «1С:Предприятие» нет свободных клиентских лицензий, пользователь в браузере работать не сможет.
Тонкий клиент — это полноценное приложение, установленное непосредственно на операционной системе пользователя (Windows, macOS или Linux). При запуске тонкого клиента и подключении к базе по протоколу HTTP или HTTPS программа действует по следующему алгоритму:
При публикации информационной базы на веб-сервере (под управлением Apache или Microsoft IIS) создается специальный конфигурационный файл default.vrd. Этот файл указывает веб-серверу, как именно перенаправлять запросы к базе данных 1С. Для автоматизации этого процесса можно использовать внешнюю обработку для публикации информационных баз.
Проанализируем пример структуры файла default.vrd, который отвечает за подключение к базе данных:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/MyBase"
ib="File="C:\1C_Bases\MyBase";">
<ws>
<point name="WebServices"
alias="ws.1cws"
enable="true"/>
</ws>
<httpServices publishByDefault="true"/>
</point>
Параметр ib указывает путь к файловой базе данных. В случае клиент-серверного варианта здесь будут прописаны имя сервера приложений и имя базы данных в кластере.
Выясним причину, почему веб-клиент часто не может запуститься, если файловая база опубликована на веб-сервере. В файловом варианте работы у нас нет полноценного сервера приложений 1С. Всю работу по передаче данных берет на себя специальный модуль расширения веб-сервера (например, wsap24.dll для IIS или соответствующий модуль для Apache).
Если к такой базе подключается пользователь через браузер, то именно модуль расширения веб-сервера должен найти и выдать ему лицензию. Чтобы этот механизм сработал, должны выполняться следующие условия:
.lic) должны быть установлены непосредственно на сервере, где запущен Apache или IIS.C:\ProgramData\1C\licenses для Windows или /var/1C/licenses для Linux.IUSR для IIS или www-data для Apache), должна иметь полные права на чтение этих файлов лицензий.Если ваша база работает в клиент-серверном режиме (под управлением сервера «1С:Предприятие» и СУБД вроде PostgreSQL или MS SQL), схема раздачи лицензий меняется:
Истина). Если этот флаг отключен, сервер не будет делиться своими лицензиями с веб-клиентами.В процессе обсуждения часто возникает идея: «Если у нас есть 3 лицензии на рабочих станциях, давайте просто скопируем файлы лицензий .lic на сервер». Разберем по шагам, почему этот способ не работает и как выполнить перенос корректно.
Программная лицензия 1С жестко привязывается к ключевым параметрам компьютера, на котором она активируется. Сюда входят параметры процессора, материнской платы, объем оперативной памяти, сетевые адаптеры, версия операционной системы и другие аппаратные характеристики. При простом копировании файла .lic на другое железо лицензия мгновенно становится недействительной, и платформа 1С блокирует запуск сеанса.
Чтобы правильно собрать все имеющиеся лицензии на сервере, выполните следующие действия:
При активации нескольких однопользовательских лицензий на одном сервере платформа умеет их суммировать. Например, если вы последовательно активируете три однопользовательские лицензии на сервере, веб-сервер сможет одновременно раздать лицензии трем различным веб-клиентам.
Важное предупреждение о расходе лицензий: Помните, что при локальном использовании однопользовательской лицензии на ПК пользователь может открывать сколько угодно баз 1С одновременно в рамках одного сеанса Windows, расходуя всего одну лицензию. Однако, когда лицензии раздает сервер (веб-сервер или сервер 1С), они расходуются по принципу «одна лицензия на один сеанс (подключение)». Если один и тот же сотрудник откроет базу данных в двух разных вкладках браузера, сервер спишет из общего пула две лицензии.