При публикации информационной базы 1С:Предприятие на веб-сервере Apache и использовании прокси-сервера Nginx с включенной базовой авторизацией (Basic Auth) пользователи часто сталкиваются с необходимостью вводить учетные данные дважды: сначала для веб-сервера Nginx, а затем в окне аутентификации самой платформы 1С. Разберем ситуативные решения этой проблемы и варианты передачи учетных данных для автоматического входа в веб-клиент.
Рассмотрим основной технический способ передать авторизацию от Nginx к веб-серверу Apache и далее в 1С. Если имя пользователя и пароль, используемые при проверке в Nginx, полностью совпадают с учетными записями в информационной базе 1С, можно настроить сквозную передачу HTTP-заголовка Authorization.
Для реализации этой схемы проанализируем конфигурационный файл Nginx и добавим в блок проксирования location проброс соответствующего заголовка:
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Authorization $http_authorization;
}
При такой настройке Nginx передает сформированный заголовок Authorization: Basic <base64-строка> дальше на Apache. Платформа 1С:Предприятие считывает эти данные и производит авторизацию пользователя без повторного показа диалогового окна.
Разберем вариант, предложенный в обсуждении, когда требуется скрыть встроенную форму авторизации 1С для внешних подключений. Для этого можно настроить публикацию базы так, чтобы веб-сервер Apache автоматически подключался под служебной учетной записью 1С, а разграничение прав или авторизацию пользователей выполнять средствами веб-сервера или внутри информационной базы.
Для этого откроем файл конфигурации публикации default.vrd, расположенный в каталоге публикации базы на веб-сервере, и отредактируем атрибут ib элемента point:
<point name="mybase"
alias="mybase"
ib="File="C:\1C_Bases\BaseDB";usr=СлужебныйПользователь;pwd=ПарольСлужебногоПользователя;"
enable="true">
</point>
Разберем особенности данного подхода:
СлужебныйПользователь.Платформа 1С:Предприятие поддерживает передачу логина и пароля непосредственно в адресной строке при обращении к веб-клиенту. Посмотрим на формат такой ссылки:
http://my-server.domain/mybase/ru_RU/?N=ИмяПользователя&P=Пароль
Выясним ключевые особенности применения параметров URL:
N задает имя пользователя информационной базы.P передает пароль пользователя.cmd=start для явного указания команды запуска.Важное предупреждение о безопасности: передача пароля в открытом виде через URL считается небезопасной, так как данные сохраняются в логах Nginx, Apache, истории браузера и сетевых прокси-серверах. Используйте данный способ только в изолированных защищенных сетях.
Если простая сквозная авторизация Basic Auth не подходит по требованиям безопасности, проанализируем штатные механизмы платформы 1С для реализации беспарольного входа: