Перейти к основному содержимому

Доступ к базе знаний в личном кабинете без авторизации

Важно!

Функционал будет доступен с релиза 3.1.20.8

В этой статье описывается алгоритм для настройки публикации базы знаний с использованием сервера Apache (XAMPP) или IIS, таким образом, чтобы можно было открыть статью базы знаний в личном кабинете по внешней ссылке без введения логина и пароля пользователя.

Настройка личного кабинета

Данный механизм не работает при включенной собственной авторизации. Поэтому прежде всего проверим ее статус и, если он активен, отключим.

БезАвторизации

Настройка пользователя

Необходимо создать служебного пользователя, который будет использоваться для входа в базу знаний. Они понадобятся нам позже при редактировании VRD-файла публикации.

БезАвторизации

В целях безопасности зададим минимальные права для данного пользователя. По необходимости можем разрешить данному пользователю редактировать базу знаний.

БезАвторизации

Настройка VRD-файла публикации

Необходимо произвести дополнительные настройки с публикацией ИБ.

Настройка публикации Apache

Выполните дополнительную настройку сервера Apache, которую начали при публикации конфигурации ранее в уроке Публикация конфигурации на веб-сервере Apache. После публикации ИБ необходимо внести изменения в конфигурационный файл Apache и создать вторую публикацию ИБ. Для этого необходимо перейти в каталог, куда установлен Apache (у меня это C:\xampp\apache), затем открыть папку conf и отредактировать файл httpd.conf, а именно строки, добавленные при публикации базы:

# 1c publication
Alias "/ITdemo" "D:/Apache/ITDemo/"
<Directory "D:/Apache/ITDemo/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "D:/Apache/ITDemo/default.vrd"
</Directory>

Скопируйте и вставьте этот блок ниже. В результате должно получиться следующее:

 # 1c publication
Alias "/ITdemo" "D:/Apache/ITDemo/"
<Directory "D:/Apache/ITDemo/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "D:/Apache/ITDemo/default.vrd"
</Directory>

# 1c publication
Alias "/ITdemo" "D:/Apache/ITDemo/"
<Directory "D:/Apache/ITDemo/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "D:/Apache/ITDemo/default.vrd"
</Directory>

В скопированном блоке измените следующие строки на собственные значения:

 Alias "/ITdemo" "D:/Apache/ITDemo/"     ->    Alias "/ITBZ" "D:/Apache/ITDemoBZ/"   

таким образом вы добавляете ещё одну публикацию ИБ с именем «ITBZ», которая будет расположена по следующему пути D:/Apache/ITDemoBZ

<Directory "D:/Apache/ITDemo/">     ->    <Directory "D:/Apache/ITDemoBZ">  

сам каталог файлов новой публикации

ManagedApplicationDescriptor "D:/Apache/ITDemo/default.vrd"      ->    ManagedApplicationDescriptor "D:/Apache/ITDemoBZ/default.vrd" 

файл описания параметров подключения.

В результате должно получиться так:

 # 1c publication
Alias "/ITdemo" "D:/Apache/ITDemo/"
<Directory "D:/Apache/ITDemo/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "D:/Apache/ITDemo/default.vrd"
</Directory>

# 1c publication
Alias "/ITBZ" "D:/Apache/ITDemoBZ/"
<Directory "D:/Apache/ITDemoBZ/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "D:/Apache/ITDemoBZ/default.vrd"
</Directory>

Далее необходимо создать каталог по прописанному пути, который только что был прописан (у меня это D:/Apache/ITDemoBZ/) и скопировать в него файл 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="/ITdemo"
ib="File=&quot;D:\Bases\Tests\ITdemo&quot;;"
enableStandardOData="true">
<ws>
<point name="AddressSystem"
alias="AddressSystem.1cws"
enable="true"/>
<point name="EnterpriseDataExchange_1_0_1_1"
alias="EnterpriseDataExchange_1_0_1_1.1cws"
enable="true"/>
<point name="EnterpriseDataUpload_1_0_1_1"
alias="EnterpriseDataUpload_1_0_1_1.1cws"
enable="true"/>
<point name="EquipmentService"
alias="EquipmentService.1cws"
enable="true"/>
<point name="Exchange"
alias="exchange.1cws"
enable="true"/>
<point name="Exchange_2_0_1_6"
alias="exchange_2_0_1_6.1cws"
enable="true"/>
<point name="InterfaceVersion"
alias="InterfaceVersion.1cws"
enable="true"/>
<point name="KnowledgeDB"
alias="kdb1.1cws"
enable="true"/>
</ws>
<httpServices>
<service name="УстановкаОценокПоЗаданиям"
rootUrl="score"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5">
<accessTokenAuthentication>
<issuers/>
<accessTokenRecepientName/>
</accessTokenAuthentication>
</service>
<service name="ЛичныйКабинет"
rootUrl="lk"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5">
<accessTokenAuthentication>
<issuers/>
<accessTokenRecepientName/>
</accessTokenAuthentication>
</service>
</httpServices>
</point>

В новом файле необходимо внести следующие изменения:

base="/ITdemo" - > base="/ITBZ"

В строку подключения добавьте пользователя, данные которого будут использоваться для авторизации средствами 1С в браузере:

ib="File=&quot;D:\Bases\Tests\ITdemo&quot;;Usr=&quot;Пользователь БЗ&quot;;Pwd=&quot;ANY_PASSWORD&quot;;"

Пользователя Пользователь БЗ с паролем ANY_PASSWORD (здесь следует указать вашего служебного пользователя, которого добавили ранее в ИБ).

<?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="/ITLk"
ib="File=&quot;D:/Apache/ITDemoBZ&quot;;Usr=&quot;Пользователь БЗ&quot;;Pwd=&quot;ANY_PASSWORD&quot;;"
enableStandardOData="true">

<httpServices>
<service name="БазаЗнаний"
rootUrl="bz"
enable="true"/>
</httpServices>
</point>

После внесённых изменений необходимо перезапустить Apache.

Настройка публикации IIS

После публикации ИБ на веб-сервере IIS (см. Публикация конфигурации на веб - сервере IIS) в каталоге c:\inetpub\wwwroot\ создайте новый каталог ITdemoBZ, скопируйте в него содержимое каталога первой публикации c:\inetpub\wwwroot\ITdemo\, а именно 2 файла: default.vrd и web.config. Откройте файл default.vrd на редактирование и внесите следующие изменения:

base="/ITdemo" - > base="/ITdemoBZ"

имя второй публикации ИБ.

В строку подключения добавьте пользователя, который будет использоваться для авторизации средствами 1С (в окне авторизации при открытии личного кабинета в браузере):

ib="File=&quot;D:\Bases\Tests\ITdemoBZ&quot;;Usr=&quot;Пользователь БЗ&quot;;Pwd=&quot;ANY_PASSWORD&quot;;"

Строка подключения для серверной базы будет выглядеть примерно так:

ib="Srvr=&quot;D:\Bases\Tests&quot;;Ref=&quot;ITdemoBZ&quot;;Usr=&quot;Пользователь БЗ&quot;;Pwd=&quot;ANY_PASSWORD&quot;;"

Пользователя Пользователь БЗ с паролем ANY_PASSWORD (здесь необходимо указать вашего служебного пользователя, которого добавили ранее в ИБ). Блоки веб-сервисов, а также блок описания HTTP-сервисов, можно удалить. В результате должен получиться следующий вариант файла:

<?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="/ITdemoLK"
ib="File="D:\Bases\Tests\ITdemoBZ";Usr="Пользователь БЗ";Pwd="ANY_PASSWORD""
enableStandardOData="true">

<httpServices>
<service name="<БазаЗнаний>"
rootUrl="bz"
enable="true"/>
</httpServices>
</point>

Для вновь созданной папки c:\inetpub\wwwroot\ITdemoBZ\ необходимо предоставить полные права доступа пользователю IUSR и группе IIS_IUSRS - аналогично тому, как это делалось при первой публикации ИБ. Затем откройте Диспетчер служб IIS, раскройте ветку Default Web Site и найдите добавленную вами папку ITdemoBZ. В контекстном меню этой папки выберите Преобразовать в приложение:

БезАвторизации

Подтверждаем преобразование. Затем перезапустим службы IIS.

Настройка фильтров для определённых адресов

Важное замечание

Пока что при вышеописанных настройках из базы знаний можно перейти в личный кабинет и получить доступ к адресной книге.

Чтобы избежать этой проблемы, можно настроить фильтр для определённых адресов на стороне сервера Apache или IIS.

Информация

Эта инструкция носит рекомендательный характер. Техническая поддержка не предоставляет консультации по настройке сервера.

Apache

Добавим в файл httpd.conf инструкцию, которая будет запрещать запросы с точным совпадением регулярному выражению ^/ITdemoBZ/hs/bz/$.

<LocationMatch "^/ITdemoBZ/hs/bz/$">
Require all denied
</LocationMatch>

В результате при обращении к веб-странице личного кабинета local\ITdemoBZ\hs\bz запрос блокируется на стороне сервера Apache, и браузер выводит страницу с описанием ограничения доступа.

IIS

Чтобы открыть настройки фильтрации запросов для сервера IIS, необходимо перейти в публикацию без авторизации ITdemoBZ и в центральном окне найти и запустить раздел Фильтрация запросов.

БезАвторизации

В открывшемся окне Фильтрация запросов выберем вкладку URL-адрес. Затем с помощью действий на правой панели добавим правила, как изображено на картинке ниже.

БезАвторизации

В результате при обращении к веб-странице личного кабинета запрос блокируется на стороне сервера IIS, и браузер выводит страницу с описанием ограничения доступа.

Заключение

Теперь можно открывать базу знаний, например, по корневому адресу (без авторизации):

http://localhost/uit_noauth/hs/lk/kb.html или https://<public_domain>/uit_noauth/hs/lk/kb.html