Что понадобится
- Компьютер отвечающий минимальным системным требованиям для работы веб-сервера под управлением одной из операционных систем:
- Права локального администратора на данном компьютере.
- Дистрибутив для установки компонент «1С:Предприятие». Для настройки 64-разрядного модуля расширения веб-сервера, дистрибутив для установки 64-разрядного сервера «1С:Предприятие». В данном примере используется версия 8.3.4.389. Для более старых версий «1С:Предприятие» (8.1 и 8.2) алгоритм публикации баз данных в целом аналогичен.
Почему не работает авторизация windows в 1c предприятие 8.3?
Добрый день друзья!
У нас сделан терминальный сервер для работы с 1С на базе обычной Windows 7, на этой же машине вертятся сервер 1С предприятие и MSSQL к нему в пару.
Все было хорошо, пользователи успешно заходили в свои учетки по авторизации Windows.
Теперь конфигурация поменялась: локальная сеть, 2 отдельных машины, на одной вертятся все те же 1С MSSQL, а вот терминалы переместились на отдельную машину, сделанную все тем же колхозом из Windows 7. Теперь соответственно адрес сервера и базы поменялся с “localhost/mybase” на “192.168.10.132/mybase”… Однако теперь у нас не работает авторизация через учетки Windows.
Естественно, никакого контроллера домена, рабочей группу – ничего нет просто за ненадобностью.
Вопрос, как заставить сервер 1С принимать авторизации Windows, если терминальник теперь на другой физической машине?
.1. Файл default.vrd
В файле default.vrd описываются опубликованные Web-сервисы (элемент <ws>), а также указывается имя виртуального приложения (атрибут base) и строка подключения к информационной базе «1С:Предприятие» (атрибут ib). В данном примере для файловой информационной базы, строка подключения будет следующей:
ib="File="C:1C_BASEDemoAccounting";"
.2. Файл web.config
Файл web.config — это файл, определяющий параметры для ASP.NET web-приложения. В каждом web-приложении должен быть файл web.config, находящийся в его корневом каталоге. Наш виртуальный каталог не является исключением.
В текущем файле содержатся данные об обработчике «1С Web-service Extension», обрабатывающем запросы к данному приложению. Обработчик настроен таким образом, что все запросы передаются библиотеке wsisapi.dll, расположенной в каталоге bin, каталога с файлами «1С:Предприятие».
Данный обработчик можно найти (или добавить, если его нет) в Диспетчере служб IIS. Для этого необходимо выделить вкладку с текущим приложением и в окне свойств выбрать пункт «Сопоставления обработчиков» (Handler Mappings).
В таблице сопоставлений обработчиков увидим наш обработчик «1С Web-service Extension». Если такого обработчика в списке нет, его следует добавить выбрав в окне «Действия» (Actions) пункт «Добавление сопоставления сценария с подстановочными знаками» (Add Wildcard Script Map…).
При добавлении вводим имя обработчика и указываем путь к файлу wsisapi.dll. Данные параметры можно изменить и для действующего обработчика выбрав пункт «Изменить…» (Edit…) в окне списка действий.
Необходимо также убедиться, что для обработчика стоит флаг «Выполнение» (Execute) в окне изменений разрешений функции. Вызвать данное окно можно выбрав пункт «Изменение разрешений функции…» (Edit Feature Permissions…) в окне «Действия» (Actions).
1c, sql server, режимы аутентификации
Проверялось на: Win 2000 Server, SQL Server 2000, 1C 18 релиз
Данная статья является дополнением к статье “Первые шаги“,
в которой было рассказано как по шагам произвести установку 1С, SQL Server,
а также как произвести конвертацию вашей DBF базы. В этой статье будут подробно
рассмотрены варианты подключения к SQL Server, вопросы безопасности, а также
способ, позволяющий подключаться 1С в режиме авторизации Windows.
При установке SQL Server (либо после его установке) необходимо выбрать режим
подключения (аутентификации, авторизация) пользователей к SQL Server. Для этого
как в SQL Server 7.0 так и SQL Server 2000 существует два режима: смешанный
и авторизация Windows. Вообще-то 1С поддерживает только смешанный способ подключения*.
Причиной этого является довольно частое появление следующей ошибки: Login failed
for user ‘%ls’. Reason: Not associated with a trusted SQL Server connection.
Для 1С это сообщение означает, что вы выбрали способ авторизации Windows – в
своих методических материалах в этом случае 1С рекомендует указывать смешанный
режим подключения. Рассмотрим подробно оба режима. Данная информация взята мной
из книгиљ издательства “БХВ-Петербург” ‘MS SQL Server 2000. Наиболее полное
руководство” автор Е. Мамаев, которую я вам рекомендую в качестве настольной
по SQL Server 2000.
* – на самом деле режим авторизации “Windows only”
также возможен (см. ниже по тексту раздел “1С и режимы авторизации”)
Смешанный режим подключения (Mixed Mode, SQL Server and Windows NT / 2000).
В этом режиме возможна авторизация как средствами SQL Server, так и средствами
Windows NT / 2000. Рассмотрим вариант авторизации SQL Server (режим авторизации
Windows будет рассмотрен далее).
В этом режиме авторизация пользователей производится самим SQL Server. Вся
информация о пользователях хранится в системной базе Master. Для каждого пользователя
указывается имя учетной записи, уникальный идентификатор SQL Server, пароль
и другая информация.
Авторизация SQL Server применяется в основном клиентами, для которых недоступна
регистрация в домене Windows NT. Например, пользователям Novell NetWare, Unix
и т.д. При подключении к SQL Server через Internet регистрация в домене не выполняется,
поэтому в данном случае также необходимо использовать авторизацию SQL Server.
Дополнительно к материалу книги хотел бы отметить еще один важный момент. 1С
при подключении к SQL Server может использовать только один логин. Права данного
логина (или пользователя) должны позволять 1С производить любые действия с базой
данной. Такими правами по умолчанию владеют системные администраторы, а также
владельцы базы данных. Чтобы уменьшить риск разрушения данных в других базах,
стоит выбирать в качестве такого логина именно владельца базы данных. Если,
по причине нарушения безопасности, с базой данных 1С что-то и случится, то это
не коснется остальных баз данных, которые управляются данным сервером. Как назначить
базе владельца базе данных рассказано вэтой статье.
Режим подключения Windows (Windows Authentication Mode, Windows
NT / 2000 only)
При авторизации Windows подлинность пользователя проверяется операционной системой.
Пользователь автоматически получает права доступа к данным SQL Server сразу
же после регистрации в домене. Такой метод предоставления доступа называется
установлением доверительного соединения.
Важно! Доверительное соединение в SQL Server 2000 поддерживается только при
наличии сетевых библиотек Multiprotocol и Named Pipes.
Операционная система работает с учетными записями (logins), которые содержат
все данные о пользователе. Каждая такая запись имеет уникальный идентификатор
(login ID) или, как его называют по-другому, идентификатор безопасности (SID,
Security Identification), с помощью которого пользователь регистрируется в сети.
Аутентификация Windows NT предусматривает сохранение в системной базе данных
Master в SQL Server 2000, только идентификационного номера учетной записи. Остальная
информация хранится в базе данных домена. Изменение имени пользователя или его
пароля никак не отразится на правах доступа к SQL Server.
Информация об учетной записи считывается SQL Server только при регистрации.
Поэтому изменения, которые администратор произвел с ней, отразятся только во
время очередной регистрации.
Авторизация Windows NT дает определенные преимущества. На пользователях автоматически
отражаются все правила политики безопасности, установленные в домене. Также
этот режим упрощает управление правами доступа при наличии нескольких серверов
SQL Server. При выполнении запросов на несколько серверов не нужно производить
отображение логинов SQL Server.
При авторизации Windows NT следует следить за доверительными отношениями. Если
пользователь одного домена подключается к SQL Server в другом домене, то между
этими доменами должны быть настроены доверительные отношения.
Если в вашей сети большое количество пользователей, то удобнее будет предоставлять
доступ к SQL Server не каждому пользователю, а группе пользователей выбранного
домена.
На этом завершим рассмотрение режимов авторизации.
Ссылки по теме.
Enterprise Manager
Server – Properties – Security (выбор режима авторизации)
Server – Security – Loginsљ (управление учетными записями сервера)
Server – Databases – Database – Users (управление пользователями базы данных)
Books Online
Installing SQL Server – Authentication Mode (выбор режима авторизации: коротко)
Administering SQL Server – Managing Security (управление безопасностью)
Administering SQL Server – Managing Security – Authentication Modes (режимы
авторизации: подробно)
1С и режимы авторизацииКак я уже говорил, 1С может подключаться к SQL Server только в случае смешанного
режима авторизации. Вернее только этот режим поддерживается при подключении
к SQL Server по протоколу TCP/IP. Рассмотрим чем это обусловлено. Прежде всего,
подключение возможно только через одну учетную запись, которая указываетсяљ
в режиме “Конфигуратор” через меню “Администрирование – Параметры базы данных
SQL:”. Причем данные поля должны быть обязательно заполнены – иначе выдается
сообщение об ошибке (по крайней мере, в 18 релизе это так). В то же время 1С,
используя ODBC, создает подключение с помощью функции SQLDriverConnect и для
этого передает строку подключения следующего вида:
DRIVER=SQL Server;SERVER=%s;UID=%s;PWD=%s;DATABASE=master;APP=1CV7;UseProcForPrepare=0
Вместо символов %s подставляются имя сервера, пользователь и пароль. Но для
подключения в режиме авторизации Windows необходима строка подключения:
DRIVER=SQL Server;SERVER=%s;Trusted_connection=yes;DATABASE=master;APP=1CV7;UseProcForPrepare=0
Поэтому любое имя пользователя, указанное в конфигураторе приведет к ошибке
с кодом 18452, которая была приведена выше. Может быть и можно сделать так,
чтобы введенное имя пользователя было связано с доверительным соединением. Например,
я пробовал записать имя пользователя вместе с доменом – не получилось – выдавалась
та же ошибка. Но все равно эти действия не имеют смысла – основная цель авторизации
Windows подключение РАЗНЫХ пользователей, но никак не всех под одним логином.
Это ограничение можно было бы обойти, если бы в параметрах базы можно было бы
указывать пустые параметры. Но как я уже писал выше это не возможно. Здесь мы
подходим вплотную к решению проблемы. Мы знаем какую функцию 1С используется
для подключения к SQL Server, какая при этом формируется строка и какая строка
нам нужна. Эврика! – мы просто меняем эту строку, а находится она в файле bkend.dll.
Заменяем ее на строку:
DRIVER=SQL Server;SERVER=%s;UID=;PWD=; DATABASE=master;APP=1CV7;UseProcForPrepare=0
Важно чтобы длина строки оставалась прежней и чтобы она начиналась в файле
с того же смещения. Для этого перед словом DATABASE добавляем 4 пробела. Вуаля!
Теперь вы можете поставить авторизацию Windows и наслаждаться. Можно делать
такие вещи!љ – аж дух захватывает! Самый простой пример, ограничение определенным
пользователям доступа к некоторым таблицам. Дальше дело за вашей фантазией!
Но это еще не все. Данную строку можно переписать по-другому:
DSN=DNS1C; DATABASE=master;APP=1CV7;UseProcForPrepare=0
Опять же нужно соблюсти смещения начала и конца строки. Данная строка позволяет
подключаться к SQL Server через источник данных, настроенный на клиенте. Этот
способ немного сложнее (нужно настраивать источника на каждом клиенте), но с
помощью него можно решить другую проблему – хранение пароля подключения не в
файле DBA (который как известно довольно легко расшифровывается), а хранение
его средствами операционной системы. Для этого в конфигураторе нужно просто
задать имя пользователя, а пароль оставить пустым – теперь-то он хранится в
другом месте! Вуаля очередной раз. Плюс небольшой P.S. – в документации для
SQL Server 2000 написано, что указание Trusted_connection обязательно, но я
проверил это на своей системе – предыдущий метод сработал. Если у вас он работать
не будет, то придется использовать данный метод.
Когда будете создавать новых пользователей, то у них не будет никаких прав
на данные в базе 1С. Кроме того, что нужно будет выставить эти права, нужно
будет также указать роли (для SQL Server 2000, для 7.0 не знаю как): db_datareader,
db_datawriter , db_creator. Роль db_creator нужна, так как при старте 1С изменяет
некоторые параметры БД (для этого используется ХП sp_dboption, которая в свою
очередь использует команду ALTER DATABASE). При установке разрешений на доступ
к таблицам и прочая можно запариться 😉 – для этого лучше сразу написать скрипт
с применением команды GRANT для каждой таблицы, ХП и т.п. Вроде бы все. Не пробовал
подключать более двух пользователей (разных). Два одинаковых на моем домашнем
компе – работают :).
Обычным образом (то есть без использования хакерских методов) 1С может подключаться
в режиме аворизации Windwos только (а может и не только) по протоколу Named
Pipes. В этом случае система просто игнорирует имя пользователя и пароль, передаваемые
при соединении. Почему это не делается в случае протокола TCP/IP для меня является
загадкой. Чтобы такое подключение было возможно желательно, чтобы на сервере
был установлен только протокол Named Pipes, либо чтобы он стоял первым в списке
в утилитах SQL Server по настройке сетевых протоколов на клиенете и сервере.
Если вам это не поможет (так, например, случилось со мной), то нужно просто
создать алиас (в SQL Server 2000) с помощью утилиты Client Network Utility,
указав что соединение будет производится по протоколу Named Pipes. После этого
имя алиаса можно использовать в качестве имени SQL Server и без проблем работать
по протоколу Named Pipes. Но. Есть большое “Но” в этом варианте. Использование
протокола Named Pipes не рекомендуется по причине его низкой производительности.
За мой срок работы с SQL Server я слышал разные комментарии по этому поводу
большая часть из них подтверждала это, хотя были и противоположные замечания,
в которых указывалось, что использование Named Pipes не снижает производительность
работы с SQL Server. Хорошо бы найти четкие экспериментальные подтверждения
этому и желательно авторитетные, для меня пока это лишь теоретические предположения.
Под конец хочу дать вам ссылку на еще одну интересную методику. Здесь
вы найдете более красивое решение проблемы безопасности, которое не использует
хак 1С (в прямом его смысле). Кроме того, этот метод позволяет более гибко настроить
ограничения доступа к данным, причем так, что 1С при этом не будет “падать”
(если вы будет пользоваться обычной методикой ограничения прав доступа, то 1С
при попытке доступа будет “вываливаться” с сообщением об ошибке доступа к данным).
За сим прощаюсь. Безопасных Вам связей!
Шемякин Павел, июль 2002 оригинал на http://1csql.virtualave.net/1csql/
Установка веб-сервера IIS
Устанавливаем веб-сервер Internet Information Server, который по умолчанию входит в поставку Microsoft Windows Server. При установке обязательно выбираем компоненты:
Подробно про процесс развертывания веб-сервера IIS я писал:
Установка компонент «1С:Предприятие»
На этот же сервер, где развернут веб-сервер IIS, устанавливаем «1С:Предприятие» (32-разрядные компоненты) обязательно выбрав при установке компоненты:
- 1С:Предприятие
- Модули расширения веб-сервера
Если планируется настроить 64-разрядный модуль расширения веб-сервера, то необходимо дополнительно запустить программу установки 64-разрядного сервера из соответствующей поставки «1С:Предприятие» и установить компоненту:
- Модуль расширения веб-сервера
Публикация базы данных на веб-сервере
Переходим к непосредственной публикации базы данных на веб-сервере. Для этого запускаем «1С:Предприятие» в режиме Конфигуратор для той базы, которую требуется опубликовать. Затем в меню выбираем «Администрирование» — «Публикация на веб-сервере…»
Откроется окно настройки свойств публикации на веб-сервере. Основные поля необходимые для публикации уже заполнены по умолчанию:
- Имя виртуального каталога — имя по которому будет происходить обращение к база данных на веб-сервере. Может состоять только из символов латинского алфавита.
- Веб сервер — выбирается из списка найденных на текущем компьютере веб-серверов. В нашем случае это Internet Information Services.
- Каталог — физическое расположение каталога, в котором будут располагаться файлы виртуального приложения.
- Соответствующими флагами можно указать типы клиентов для публикации, а также указать возможность публикации Web-сервисов. В расположенной ниже таблице можно отредактировать список Web-сервисов которые будут опубликованы, а также в столбце «Адрес» изменить синоним, по которому будет происходить обращение к данному Web-сервису.
- Также для веб-сервера IIS есть возможность указать необходимость выполнения аутентификации на веб-сервере средствами ОС, установив соответствующий флаг.
Выбрав необходимые настройки публикации нажимаем «Опубликовать».
Если публикация прошла без ошибок, увидим соответствующее сообщение.
Публикация на веб-сервере IIS всегда выполняется для веб-сайта по умолчанию и для пула приложения по умолчанию. Стоит иметь ввиду, что при выполнении публикации из конфигуратора будет зарегистрирован 32-разрядный модуль расширения веб-сервера, а используемый по умолчанию пул приложений — DefaultAppPool — без настройки работает только с 64-разрядными приложениями.
Соответственно, дальнейшие действия зависят от разрядности модуля расширения веб-сервера, который планируется использовать. Для 32-разрядного модуля расширения веб-сервера, необходимо разрешить пулу приложений использовать 32-разрядные приложения, либо же зарегистрировать 64-разрядный модуль расширения веб-сервера. Об этом пойдет речь ниже
Настройка IIS для использования 32-разрядного модуля расширения веб-сервера
Запустим Диспетчер служб IIS (Internet Information Services (IIS) Manager). Сделать это можно из Диспетчера серверов (Server Manager) выбрав в меню пункт «Средства» (Tools) — «Диспетчер служб IIS» (Internet Information Services (IIS) Manager).
Здесь, развернув дерево в окне подключений, увидим, что для веб-сайта по умолчанию — Default Web Site — появился преобразованный в приложение виртуальный каталог с именем, которое мы задавали при публикации базы данных. Для завершения публикации осталось только разрешить 32-разрядные приложения для пула приложений по умолчанию. Для этого перейдем в дереве подключений на вкладку «Пулы приложений» (Application Pools).
В списке пулов приложений найдем пул с именем DefaultAppPool. Кликнем по нему правой кнопкой мыши и в контекстном меню выберем пункт «Дополнительные параметры» (Advanced Settings).
В открывшемся окне параметров пула приложения, в группе «Общие» (General) найдем пункт «Разрешены 32-разрядные приложения» (Enable 32-Bit Applications) и установим значение параметра равным True. Затем сохраним изменения нажав «ОК».
Настройка IIS для использования 64-разрядного модуля расширения веб-сервера
Зарегистрировать 64-разрядный модуль расширения веб-сервера можно с помощью утилиты webinst.exe соответствующей версии, расположенной в каталоге bin, каталога с установленной программой «1С:Предприятие», либо воспользоваться приведенным ниже способом.
Запустим Диспетчер служб IIS (Internet Information Services (IIS) Manager). Сделать это можно из Диспетчера серверов (Server Manager) выбрав в меню пункт «Средства» (Tools) — «Диспетчер служб IIS» (Internet Information Services (IIS) Manager).
Здесь, развернув дерево в окне подключений, увидим, что для веб-сайта по умолчанию — Default Web Site — появился преобразованный в приложение виртуальный каталог с именем, которым мы задавали при публикации базы данных. Для завершения публикации осталось только указать данному приложению использовать 64-разрядный обработчик запросов.
В таблице сопоставлений обработчиков найдем обработчик «1С Web-service Extension». Откроем данный обработчик, кликнув 2 раза по соответствующей строке в таблице.
Отредактируем обработчик, заменив путь к исполняемой dll 32-разрядного модуля расширения веб-сервера, который выбран в данный момент, на путь к 64-разрядной версии библиотеки. В данном примере меняем путь c «C:Program Files (x86)1cv88.3.4.389binwsisapi.dll» на «C:
Подключение к опубликованной информационной базе через клиент «1С:Предприятия»
К опубликованной на веб-сервере информационной базе можно подключиться и с помощью тонкого клиента «1С:Предприятия». Для подключения откроем окно запуска «1С:Предприятие» и нажмем кнопку «Добавить» для добавления информационной базы.
В окне добавления информационной базы/группы установим переключатель в «Добавление в список существующей информационной базы» и нажмем «Далее».
Введем имя базы данных, как она будет отображаться в списке информационных баз (должно быть уникальным для данного списка), тип расположения выберем «На веб-сервере» и нажмем «Далее».
Вводим строку адреса для подключения к информационной базе (без префикса /ru_RU/). Также здесь можно указать параметры прокси-сервера (если есть) и способ аутентификации на веб-сервере. Указав необходимые настройки снова жмем «Далее».
Указываем параметры запуска для информационной базы и нажимаем «Готово» для завершения работы мастера.
После чего данная информационная база появится в списке баз окна запуска «1С:Предприятие». Обратим внимание что режим запуска Конфигуратор недоступен для данного типа подключения. Нажимаем «1С:Предприятие» для подключения к информационной базе.
Пошаговая инструкция настройки web-сервисов для 1сv8.1 и iis 7.5/7.0
Если “веб морда” расположена не по тому же адресу, что и публикация 1С (что часто бывает, например, при разработке, публикация 1С на http://localhost/1c, а разрабатываемое веб-приложение на http://localhost:8080) или, например, мы заходим на веб приложение то по ip адресу, то по имени сервера, или просто веб сервер и сервер, на котором опубликована 1С – это разные сервера, то для большинства запросов от браузера к 1С срабатывает политика CORS, которая заключается в том, что браузер сначала посылает запрос OPTIONS, на который сервер должен ответить определенным образом, заголовками, содержащими разрешения, а потом уже (если разрешение есть), браузер посылает основной запрос. В случае, когда в публикации 1С (default.vrd) жестко прописан логин и пароль, разрулить ситуацию можно средствами 1С. В случае же, когда нужно сохранить авторизацию (или используется стандартный интерфейс odata), начинаются проблемы.
20.08.2022
15499
Fragster
11