Аутентификация пользователя не выполнена url сервиса 1с документооборот
Не осилил - много букавок. Но по теме: Веб-сервер должен быть запущен от пользователя домена, для которого создан в базе 1С пользователь с аутентификацией Windows.
У меня на данный момент всё работает и в домене (8.2) и в домашней сети (8.3). Проблем не замечаю. Веб-сервер - Апач.
Я не утверждаю, что проблема в веб-сервере, но не исключаю. Можешь гадать на кофейной гуще, а можешь проверить.
Такой вариант в принципе не пойдет (хотя проверил, не работает). Суть в том, что при отработке веб-сервиса мне важно знать, под каким пользователем он исполняется, для того, чтобы сформировать тот же расчетный листок именно для этого пользователя (сотрудника). Т.е. если использовать анонимную проверку подлинности и при вызове веб-сервиса со стороны мобильного приложения передавать конкретного пользователя 1С центральной базы и его пароль, веб-сервис отработает и я буду знать, что это за пользователь, но такой вариант не пойдет из соображений безопасности.
"хотя проверил, не работает" Реши проблему с правами на Апаче, потом бубешь решать проблемы с IIS. По остальному - IIS тоже будет в 1С под одним пользователем ломиться, так что, проблему решай другими средствами. У меня есть html отчет - показывает материальный подотчет по сотруднику: сотрудник выбирает себя в поле на странице и ниже вываливается его подотчет.
Стоит "Обычная проверка подлинности" и "Проверка подлинности Windows", анонимная проверка подлинности отключена. Причем выставляю только обычную, но после публикации веб-сервисов и перезапуске самого веб-сервера автоматом дополнительно включается проверка подлинности Windows.
Такой вариант выбора пользователем себя из списка не пойдет, у него должна быть возможность получить только свои данные по зарплате, не больше.
что-то тут не понятно. "Суть в том, что при отработке веб-сервиса мне важно знать, под каким пользователем он исполняется, для того, чтобы сформировать тот же расчетный листок именно для этого пользователя (сотрудника). " Т.е. предлагается всех кому начисляем ЗП завести пользователями в базу ЗУП?
Да Ок, сейчас попробую Не для всех, из определнного перечня, список пользователей относительно небольшой
где-то на официальном ресурсе 1С я видел статью, в которой объяснялось что для веб-сервисов: - для аутентификации средствами 1С на IIS надо ставить Анонимную проверку подлинности, и при работе с веб-сервисом (на клиенте) указывать имя пользователя и пароль 1С; - для аутентификации средствами ОС на IIS надо ставить Обычную проверку подлинности, и при работе с веб-сервисом (на клиенте) указывать имя пользователя и пароль ОС (пользователь 1С будет сопоставляться с пользователем 1С по данным Аутентификации ОС в 1С (ну как обычно это делают остальные клиенты 1С)); Имхо, Проверка подлинности Windows, это немного другая история, и о ней там ничего не было сказано.
С точки зрения сетевой аутентификации первые два способа опасные (пользователь и пароль передается в открытом виде). Эту проблему решают работой веб-сервера по SSL, тогда трафик попросту шифруется ключами сертификата. Проверка подлинности Windows безопасная - никакой пароль не передается вообще, но она работает только в локальной сети.
С проверкой подлинности Windows понятно, но не работает с обычной проверкой подлинности. При этом как и говорил выше вместе с веб-сервисами публикуется и веб-клиент и с веб-клиентом проблем нету: переходим по адресу в браузере, вбиваваем доменные логин и пароль и приложение запускается. А с веб-сервисами - беда.
Веб-клиент самого ЗУП опубликован, но нужно простое мобильно приложение, грубо говоря с двумя кнопками: "Показать расчетный листок" и "Показать личные данные", мобильное приложение с помощью разработанных в ЗУП веб-сервисов и опубликованных на веб-сервере должно получать данные по запросу из центральной базы (ЗУП). Пример: пользователь Вася запускает мобильное приложение на своем планшете, нажимает кнопку "Показать расчетный листок", вводит свой доменный логин и пароль, и получает свои данные по ЗП.
Почему нет? Если использовать анонимную проверку подлинности и вместо доменных логина и пароля использовать логин и пароль пользователя 1С при обращении к веб-сервису со стороны мобильного приложения, все отлично отрабатывает, я знаю в коде операции веб-сервиса центральной базы ЗУП, какой пользователь просит данные по ЗП, и даю ему его данные.
и в 1С должен быть пользователь с включенной аутентификацией ОС с такой записью о учетке \DOMAINUSER, кроме того у него должны быть права на отработку этого веб-сервиса
еще попробуй имя пользователя указать просто USER, чета я сомневаться стал в том что можно домен вообще указать..
Пользователь с включенной аутентификацией ОС есть (при этом аутентификация 1С:Предприятия отключена). Права на обработку веб-сервиса - что под этип подразумевается? разрешения для пользователя стоят, кроме того пользователь включен в группу IIS_IUSRS.
Оно-то может и проще, но стоит именно такая задача. Думаю, все упирается в какие-то настройки, о которых я, к сожалению, не знаю.
Как вариант сделать обычный транспорт. 1) Веб Сервер с ПХП, к нему обращаются юзеры со своими учетками. 2) На внутри пхп выполнять вызов вебсервиса и параметром передавать туда имя пользователя. 3) Отдать то что получилось в 2)
у меня кончились идеи.. :) после этого я обычно проверяю сам и прошу версию платформы, но так лениво..
Я так и не понял: ты что, утверждаешь, что где-то когда-то видел, чтобы веб-сервис 1С исполнялся от имени разных пользователей домена? Что-то из разряда фантастики.
+ Немного не правильно выразился: веб-сервер запущен под контретным пользователем домена. К веб-сервису 1С обращается веб-сервер, соответственно, всегда под одним пользователем. Разве может веб-сервер исполнять 10 процессов под 10 пользователями домена?
Допустим, ты прав, к веб-сервису обращается веб-сервер, запущенный под конкретным пользователем домена, и никак иначе быть не может, т.е. невозможно обращаться к веб-сервису от имени разных пользователей домена, только от имени пользователя, под которым запущен веб-сервер. Почему тогда при обращении к самому приложению (не к веб-сервису), опубликованному на веб-сервере, через веб-клиент (браузер) аутентификация ОС срабатывает? В чем разница?
не знаю деталей работы веб-сервера, но в ОС есть функционал олицетворения (имперсонализации), когда поток временно получает права клиента, запрос которого обрабатывает. Естественно, клиента перед этим проверяют, и, обычно, делают это без запроса пароля - средствами доверия в сети.
Т.о. твою задачу проще всего решить используя анонимную аутентификацию на IIS и создавая пользователей в 1С для получения РЛ с правами на выполнение метода веб-сервиса.
Не правильно. У пользователя 1С вообще можно пароль не указывать, достаточно поставить аутентификацию ОС и указать пользователя домена, под которым запущен веб-сервер.
тут решается другая задача, здесь надо чтобы в 1С пользователь авторизовался зависимости от переданных учетных данных, а не всегда одинаково (как запущен вебсервер).
А это я не внимательно прочел)) Тогда я не понял, у тебя что-ли получилось обратиться к веб-сервису под разными пользователями домена?
При создании проекта SOAP выдается запрос на авторизацию. Логин на всякий случай сделал на латинице. При вводе логина и пароля проект создается, то есть я как бы уже авторизован.
В чем может быть проблема, почему SOAP выдает ошибку авторизации?
С SOAP и XDTO только начинаю знакомство, наверняка есть много подводных камней.
Ребят совсем запутался уже. Целый день гуглю эту тему, и ничего толкового не получилось. Подскажите пожалуйста в каком порядке действовать.
Хочу вывести на сайт номенклатуру из УТ10,3
Интересует последовательность действий.
Меня интересует конкретно авторизация на вебсервисах 1с. Где описано как оно работает??
Вроде бы все настроил, но при запросе выдается ошибка авторизации, хотя при добавлении SOAP ссылки в SOAP UI авторизация для сервиса успешно проходит.
Пробовал как IIS так и APACHE2.
Но вот что теперь делать дальше. Почему в SOAP не открывается?
(7) baracuda, хм странно, а где тогда такая ошибка выдается с html тегами?
P.S. или это не из 1С, а с сайта и косяк на странице с php/java?
(9) baracuda, так если ч/з браузер открывается, зачем в SOAP UI проверять? Пробуйте/делайте что там нужно уже в 1С =)
(12) succub1_5, браузер выдает следующее
(13) baracuda, да так примерно и должно показывать. Теперь 2 часть вопроса - ч/з что пытаетесь подключиться (ну кроме SOAP UI) - обработчик в 1С или страничка на php/java?
(15) succub1_5, ни обработчика ни php/java я не сделал пока. А надо?? И обязаткльно ли на этапе тестирования работоспособности веб-сервиса делать обработчик?
(17) baracuda, каждый раз как что-то поменяли связанное с web-сервисом в 1С (в конфигураторе) надо пересоздавать Администрирование - Публикация на веб-сервере и в IIS перезапускать службы/сервера.
Как только ч/з браузер (желательно 2-3 разных) по ссылке будет просить авторизацию/авторизироваться и выводить содержимое xml файла - можно успокоится, веб создан и работает =)
Далее уже можно обращаться к нему и отправлять/получать данные.
Но вот как обращаться к нему я не пойму. Я создал ПакетXDTO, написал ws-операцию. Дальше что?
(19) baracuda, допустим есть серверная (СК) конфигурация (где собственно сам web-service и xdto) и клиентская (КК) конфигурация (где создана ws-ссылка) и с которой будут отправляться/приниматься данные, можно и в 1 все объединить.
в целом тестовый код будет выглядеть так:
СК Общие - web-сервисы - нужный веб-сервис - нужная функция (TestConnection):
// Объявление переменных перед первым использованием в качестве
// параметра метода Свойство, при анализе параметров получения файлов
// из ПараметрыПолучения. Содержат значения переданных параметров получения файла
Перем ИмяСервера, ИмяПользователя, Пароль, Порт,
ЗащищенноеСоединение,ПассивноеСоединение,
ПутьКФайлуНаСервере, Протокол;
ИмяСервера = URLРазделенный.ИмяСервера;
ПутьКФайлуНаСервере = URLРазделенный.ПутьКФайлуНаСервере;
Протокол = URLРазделенный.Протокол;
ИмяПользователя = НастройкаСоединения.Получить("Пользователь");
ПарольПользователя = НастройкаСоединения.Получить("Пароль");
Порт = НастройкаСоединения.Получить("Порт");
Таймаут = НастройкаСоединения.Получить("Таймаут");
ПассивноеСоединение = НастройкаСоединения.Получить("ПассивноеСоединение");
ЗащищенноеСоединение = НастройкаСоединения.Получить("ЗащищенноеСоединение");
Если Протокол = "https" Тогда
ЗащищенноеСоединение = Истина;
КонецЕсли;
Если Порт = Неопределено Тогда
ПолнаяСтруктураURL = СтруктураURI(URL);
Если НЕ ПустаяСтрока(ПолнаяСтруктураURL.Порт) Тогда
ИмяСервера = ПолнаяСтруктураURL.Хост;
Порт = ПолнаяСтруктураURL.Порт;
КонецЕсли;
КонецЕсли;
НастройкиПрокси = ?(НастройкиПрокси = Неопределено, ПолучитьПустыеНастройкиПроксиСервера(), НастройкиПрокси);
Прокси = СформироватьПрокси(НастройкиПрокси, Протокол);
ПараметрыСоединения = Новый Массив;
ПараметрыСоединения.Добавить(ИмяСервера);
ПараметрыСоединения.Добавить(Порт);
ПараметрыСоединения.Добавить(ИмяПользователя);
ПараметрыСоединения.Добавить(ПарольПользователя);
ПараметрыСоединения.Добавить(Прокси);
Если Протокол = "ftp" Тогда
ПараметрыСоединения.Добавить(ПассивноеСоединение);
Если ОбщегоНазначения.ПлатформаПоддерживаетТаймаутыСети() Тогда
ПараметрыСоединения.Добавить(Таймаут);
КонецЕсли;
Если ОбщегоНазначения.ПлатформаПоддерживаетТаймаутыСети() Тогда
ПараметрыСоединения.Добавить(Таймаут);
Если ЗащищенноеСоединение = Истина Тогда
ИмяТип = "ЗащищенноеСоединениеOpenSSL";
ЗащищенноеСоединение = Новый(Тип(ИмяТип));
Иначе
ЗащищенноеСоединение = Неопределено;
КонецЕсли;
КонецЕсли;
ПараметрыСоединения.Добавить(ЗащищенноеСоединение);
// Если сохраняем файл в соответствии с настройкой
Если НастройкаСохранения["МестоХранения"] = "ВременноеХранилище" Тогда
КлючУникальности = Новый УникальныйИдентификатор;
Адрес = ПоместитьВоВременноеХранилище (ПутьДляСохранения, КлючУникальности);
Возврат СформироватьРезультат(Истина, Адрес);
ИначеЕсли НастройкаСохранения["МестоХранения"] = "Клиент"
ИЛИ НастройкаСохранения["МестоХранения"] = "Сервер" Тогда
Возврат СформироватьРезультат(Истина, ПутьДляСохранения);
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Возникает ошибка вида:
": Регламентное задание не найдено.
Возможно, оно удалено другим пользователем.".
на такую:
Процедура ОтключитьАвтоматическуюСинхронизациюДанныхСПриложениемВИнтернете() Экспорт
Если Не ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда
РегламентныеЗаданияСервер.УстановитьИспользованиеРегламентногоЗадания(
Метаданные.РегламентныеЗадания.СинхронизацияДанныхСПриложениемВИнтернете, Ложь
);
Если ПолеРежимСовместимостиСБСП20 = Неопределено Тогда
ПолеРежимСовместимостиСБСП20 = (Конвертация.РежимСовместимости = ""
Или Конвертация.РежимСовместимости = "РежимСовместимостиСБСП20")
И Не ЭтоМодельСервиса;
КонецФункции
В процедуре ЗагрузитьПравилаОбмена
после строки Конвертация.Вставить("ВерсияФормата", Значение);
вставить следующие строки:
РежимСовместимости = ПравилаОбмена.ПолучитьАтрибут ("РежимСовместимости");
Если РежимСовместимости <> Неопределено Тогда
Конвертация.Вставить("РежимСовместимости", РежимСовместимости)
КонецЕсли;
: Ошибка при вызове метода контекста (Установить)
Константы.ДатаОбновленияПовторноИспользуемыхЗначенийМРО.Установить(ТекущаяДата());
по причине:
Нельзя использовать таблицу без указания всех разделителей с независимым использованием разделяемых данных
объект: 'Константа.ДатаОбновленияПовторноИспользуемыхЗначенийМРО'
Процедура УстановитьДатуОбновленияПовторноИспользуемыхЗначенийМРО() Экспорт
Если ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда
УстановитьПривилегированныйРежим(Истина);
// записываем дату и время компьютера сервера - ТекущаяДата()
// метод ТекущаяДатаСеанса() использовать нельзя.
// Текущая дата сервера в данном случае используется в качестве ключа уникальности кэша механизма регистрации объектов.
Константы.ДатаОбновленияПовторноИспользуемыхЗначенийМРО.Установить(ТекущаяДата());
Механизм Web-сервисов позволяет использовать 1С:Предприятие 8 как набор сервисов в сложных распределенных и гетерогенных системах, а также позволяет интегрировать 1С:Предприятие 8 с другими промышленными системами использованием сервисно-ориентированной архитектуры.
Публикация веб-сервисов выполняется через конфигуратор, для этого нужно открыть окно Публикация на веб-сервере, нажав Администрирование -> Публикация на веб-сервере.
Процесс публикации описывать не буду, для каждого случая он свой, но обычно достаточно выбрать веб-сервер, указать каталог публикации и нажать на кнопку Опубликовать.
Послу публикации в указанном каталоге создастся файл default.vrd. Его содержимое будет примерно таким:
Тег ws содержит описание публикации веб-сервисов. Если мы обратимся к веб-сервису с помощью браузера, введя его адрес, например, http://192.168.0.85/DemoSSL/ws/exchange.1cws, то увидим окно авторизации, которое попросит ввести логи и пароль пользователя 1С:
2. Окно авторизации веб-сервиса |
[СетевойАдресКомпьютера]/[ИмяПубликации]/ws/[АдресВебСервиса]
Создадим пользователя 1С с логином User и паролем 123456, от имени которого в дальнейшем будет происходить автоматическая авторизация.
Замечено, окно авторизации корректно работает с логином, написанным на латинице, иначе может появится ошибка:
Допустим, необходимо, что бы веб-сервис exchange.1cws не требовал авторизацию. Для этого из файла default.vrd удаляем информацию о данном веб-сервисе, то есть удаляем строчки:
alias="exchange.1cws"
enable="true"/>
Создаем рядом с файлом default.vrd файл с именем exchange и расширением 1cws (exchange.1cws). Откроем файл текстовым редактором, укажем кодировку UTF-8 без BOM и запишем следующие строчки:
namespace="http://www.1c.ru/SSL/Exchange"
name="Exchange"
connectString="File="C:\1с\БиблиотекаСтандартныхПодсистем\DemoSSL";usr="User";pwd="123456""/>
- namespace - указываем пространство имен веб-сервиса (см. рисунок 3);
- name - указываем имя сервиса (см. рисунок 1);
- connectString - указывается расположение информационной базы (см. рисунок 4) + логин и пароль пользователя, от имени которого будет производиться авторизация. Для файлового варианта и клиент-серверного значение данного атрибута будет отличаться. Пример для клиент-серверного варианта: Srvr="localhost";Ref="DemoSSL";usr="User";pwd="123456"
UPD 15.03.2016:
Если стоит апач(а может и не только) — то по дефолту 1С пытается авторизовать пользователя системы вида: \\[DOMAIN]\HOSTNAME$, если в базе создать такого пользователя с авторизацией системы — то плясать с бубном не нужно, а дальше рулите ролями.
UPD 12.04.2017:
Создать в операционной системе пользователя, под ним настроить запуск Apache. В 1С завести пользователя, установить галку Аутентификация операционной системы и выбрать пользователя Apache. Правда при такой настройке не получится выборочной аутентификации - будут доступны все сервисы, связанные с WEB.
Если на превый запрос вы получаете окно идентификации, можете туда забить логин и пароль. У меня на Firefox c русскими пользователями это не работает. Делаем английского пользователя и все нормально коннектиться. Но все-таки интересно как это происходит – смотрим в Firefox Web-console:
$.ajax( <
url: sikudaULRWebService,
type: "POST",
contentType: "text/xml",
dataType: "text",
data: soapEnv,
contentType: "text/xml charset='utf-8'",
Authorization: "Basic c2lrdWRhd3M6MTIzNDU2"
>).success( function(dataResponce)
2. Идентификация средствами операционной системы в 1С к сожалению решается предыдущим способом. Требует введения имени и пароля пользователя Windows и не дает какого либо преимущества. Ее рассматривать не будем.
Похожие FAQ
Еще в этой же категории
Обмен 1С c клиентом используя web сервисы 1С 19
Все чаще и чаще встречаются обмены, используя технологию Web-Сервисов. Это удобно, т.к для хостовой базы данных достаточно установить расширение Web-Сервиса и обработчик данных, а для клинтского решения подключиться к Web-Сервису. Технология является Использование Web-сервисов для синхронизации баз данных в режиме online 1с 8.х 12
Часто при ведении учета в различных конфигурациях 1с возникает необходимость выполнения обмена данных. Для решения этой задачи принято использовать Универсальный обмен данными XML или другие внешние обработки, общим у которых является использование Управляем 1С со стороны используя web-сервис 6
Передача команд 1С на выполнение через ссылки в письме. web-сервисы помогают интегрировать 1С с различными программами, делая ее более гибкой. Статей в интеренете достаточно можно, но в основном там описывается выгрузка из 1С, обмен между двумя 1 Мобильное приложение в 1С: Двусторонний обмен 6
Сделаем двусторонний обмен документами между мобильным приложением и центральной базой 1С: Автор: Кухар Богдан Обмен между базами через XML (создается ФабрикаXDTO) 5
В процедурах выгрузки/загрузки создается ФабрикаXDTO из схемы, которая хранится в макете как файл. Файл настроек схемы надо использовать один и тот же в обработках Загрузки/Выгрузки Из Фабрики создается объект, его заполняю выгружаемыми данными Фаб Посмотреть все в категории WEB-сервисы, WS-ссылки, XDTO-пакеты
Читайте также:
- What s new что это за программа на андроид
- Настройка нумерации 1с документооборот
- Acronis true image как удалить разделы
- Выберите ответ в котором все расширения файлов соответствуют форматам аудио mp3 wav xls
- Как восстановить файлы оперы