При вызове веб сервиса произошла ошибка аутентификация пользователя не выполнена

An error occurred processing this request. " Способ исправления: Для исправления ошибки надо в общем модуле ОбменСообщениямиВнутренний в процедурах: ВыполнитьПодключениеКонечнойТочкиНаСторонеПолучателя, ВыполнитьПодключениеКонечнойТочкиНаСторонеОтправителя, УстановитьВедущуюКонечнуюТочкуНаСторонеОтправителя,ВыполнитьОбновлениеНастроекПодключенияКонечнойТочки,а также в модуле веб-сервиса MessageExchange и MessageExchange_2_0_1_6 после строки СтруктураЗаписи.Вставить("WSИмяПользователя", НастройкиПодключенияОтправителя.WSИмяПользователя);вставить строку кода:СтруктураЗаписи.Вставить("WSЗапомнитьПароль", Истина);После этого надо зайти в регистр НастройкиТранспортаОбмена в менеджере сервиса и задать пароль для подключения к конечной точке, признак "Запомнить …

Содержание

  1. Ошибка при вызове конструктора (WSОпределения) Модуль 198 и 504
  2. Ошибка при вызове конструктора (WSОпределения) Модуль 198 и 504
  3. Причины ошибок с модулем 198-504
  4. Как решить проблему
  5. HTTP Basic Authentication
  6. HTTP Digest Authentication
  7. Forms Authentication
  8. Token Authentication
  9. OAuth2 & Open ID Connect
  10. Разбираемся детально ху из ху
  11. Сервис выдачи токенов
  12. Клиент
  13. Пользователь
  14. Область (scope)
  15. Запрос на аутентификацию
  16. Токен личности
  17. Токен доступа
  18. Токен обновления
  19. Формат
  20. Основные поля

An error occurred processing this request. »

Способ исправления:
Для исправления ошибки надо в общем модуле ОбменСообщениямиВнутренний в процедурах:
ВыполнитьПодключениеКонечнойТочкиНаСторонеПолучателя,
ВыполнитьПодключениеКонечнойТочкиНаСторонеОтправителя,
УстановитьВедущуюКонечнуюТочкуНаСторонеОтправителя,
ВыполнитьОбновлениеНастроекПодключенияКонечнойТочки,
а также в модуле веб-сервиса MessageExchange и MessageExchange_2_0_1_6
после строки
СтруктураЗаписи.Вставить(«WSИмяПользователя», НастройкиПодключенияОтправителя.WSИмяПользователя);
вставить строку кода:
СтруктураЗаписи.Вставить(«WSЗапомнитьПароль», Истина);
После этого надо зайти в регистр НастройкиТранспортаОбмена в менеджере сервиса и задать пароль для подключения к конечной точке, признак «Запомнить пароль» надо установить.

Исправлено в релизе:
2.1.2

Код ошибки:
20007374

Дата публикации:
21 августа 2012 г.

Описание:
В обработке «Групповое изменение объектов» нельзя установить дробное числовое значение реквизита.

Способ исправления:
В обработке ГрупповоеИзменениеОбъектов в табличной части Операции у реквизита Значение в свойстве Тип для типа данных «Число» изменить длину и точность, например, «15, 4».

Исправлено в релизе:
2.1.2

Код ошибки:
20007286

Дата публикации:
17 августа 2012 г.

Описание:
Если для синхронизации данных в модели сервиса используется протокол https (защищенное соединение) и платформа версии 8.2.16 или выше, то может возникать ошибка вида:
«Ошибка разбора XML: – [6,8]
Фатальная ошибка:
Opening and ending tag mismatch: hr line 0 and body»

Способ исправления:
Для исправления ошибки следует заменить функцию
ОбщийМодуль.ПолучениеФайловИзИнтернетаКлиентСервер.ПолучитьФайлИзИнтернет
на такую:
Функция ПолучитьФайлИзИнтернет(знач URL, знач НастройкаСохранения, знач НастройкаСоединения = Неопределено,
знач НастройкиПрокси = Неопределено)

// Объявление переменных перед первым использованием в качестве
// параметра метода Свойство, при анализе параметров получения файлов
// из ПараметрыПолучения. Содержат значения переданных параметров получения файла
Перем ИмяСервера, ИмяПользователя, Пароль, Порт,
ЗащищенноеСоединение,ПассивноеСоединение,
ПутьКФайлуНаСервере, Протокол;

ИмяСервера = URLРазделенный.ИмяСервера;
ПутьКФайлуНаСервере = URLРазделенный.ПутьКФайлуНаСервере;
Протокол = URLРазделенный.Протокол;
ИмяПользователя = НастройкаСоединения.Получить(«Пользователь»);
ПарольПользователя = НастройкаСоединения.Получить(«Пароль»);
Порт = НастройкаСоединения.Получить(«Порт»);
Таймаут = НастройкаСоединения.Получить(«Таймаут»);
ПассивноеСоединение = НастройкаСоединения.Получить(«ПассивноеСоединение»);

ЗащищенноеСоединение = НастройкаСоединения.Получить(«ЗащищенноеСоединение»);
Если Протокол = «https» Тогда
ЗащищенноеСоединение = Истина;
КонецЕсли;

Если Порт = Неопределено Тогда
ПолнаяСтруктураURL = СтруктураURI(URL);

Если НЕ ПустаяСтрока(ПолнаяСтруктураURL.Порт) Тогда
ИмяСервера = ПолнаяСтруктураURL.Хост;
Порт = ПолнаяСтруктураURL.Порт;
КонецЕсли;
КонецЕсли;

НастройкиПрокси = ?(НастройкиПрокси = Неопределено, ПолучитьПустыеНастройкиПроксиСервера(), НастройкиПрокси);
Прокси = СформироватьПрокси(НастройкиПрокси, Протокол);

ПараметрыСоединения = Новый Массив;
ПараметрыСоединения.Добавить(ИмяСервера);
ПараметрыСоединения.Добавить(Порт);
ПараметрыСоединения.Добавить(ИмяПользователя);
ПараметрыСоединения.Добавить(ПарольПользователя);
ПараметрыСоединения.Добавить(Прокси);

Если Протокол = «ftp» Тогда

ПараметрыСоединения.Добавить(ПассивноеСоединение);
Если ОбщегоНазначения.ПлатформаПоддерживаетТаймаутыСети() Тогда
ПараметрыСоединения.Добавить(Таймаут);
КонецЕсли;

Попытка
Соединение = Новый(Тип(«FTPСоединение»), ПараметрыСоединения);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
СообщениеОбОшибке = НСтр(«ru = ‘Ошибка при создании FTP-соединения с сервером %1:’») + Символы.ПС + «%2»;
ПолучениеФайловИзИнтернета.ЗаписатьОшибкуВЖурналРегистрации(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, ИмяСервера,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)));
СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, ИмяСервера,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
Возврат СформироватьРезультат(Ложь, СообщениеОбОшибке);
КонецПопытки;
Иначе

Если ОбщегоНазначения.ПлатформаПоддерживаетТаймаутыСети() Тогда
ПараметрыСоединения.Добавить(Таймаут);

Если ЗащищенноеСоединение = Истина Тогда
ИмяТип = «ЗащищенноеСоединениеOpenSSL»;
ЗащищенноеСоединение = Новый(Тип(ИмяТип));
Иначе
ЗащищенноеСоединение = Неопределено;
КонецЕсли;
КонецЕсли;
ПараметрыСоединения.Добавить(ЗащищенноеСоединение);

Попытка
Соединение = Новый(Тип(«HTTPСоединение»), ПараметрыСоединения);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
СообщениеОбОшибке = НСтр(«ru = ‘Ошибка при создании HTTP-соединения с сервером %1:’») + Символы.ПС + «%2»;
ПолучениеФайловИзИнтернета.ЗаписатьОшибкуВЖурналРегистрации(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, ИмяСервера,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)));
СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, ИмяСервера,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
Возврат СформироватьРезультат(Ложь, СообщениеОбОшибке);
КонецПопытки;
КонецЕсли;

Если НастройкаСохранения[«Путь»] <> Неопределено Тогда
ПутьДляСохранения = НастройкаСохранения[«Путь»];
Иначе
#Если НЕ ВебКлиент Тогда
ПутьДляСохранения = ПолучитьИмяВременногоФайла();
#КонецЕсли
КонецЕсли;

Попытка
Соединение.Получить(ПутьКФайлуНаСервере, ПутьДляСохранения);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
СообщениеОбОшибке = НСтр(«ru = ‘Ошибка при получении файла с сервера %1:’») + Символы.ПС + «%2»;
ПолучениеФайловИзИнтернета.ЗаписатьОшибкуВЖурналРегистрации(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, ИмяСервера,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)));
СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, ИмяСервера,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
Возврат СформироватьРезультат(Ложь, СообщениеОбОшибке);
КонецПопытки;

// Если сохраняем файл в соответствии с настройкой
Если НастройкаСохранения[«МестоХранения»] = «ВременноеХранилище» Тогда
КлючУникальности = Новый УникальныйИдентификатор;
Адрес = ПоместитьВоВременноеХранилище (ПутьДляСохранения, КлючУникальности);
Возврат СформироватьРезультат(Истина, Адрес);
ИначеЕсли НастройкаСохранения[«МестоХранения»] = «Клиент»
ИЛИ НастройкаСохранения[«МестоХранения»] = «Сервер» Тогда
Возврат СформироватьРезультат(Истина, ПутьДляСохранения);
Иначе
Возврат Неопределено;
КонецЕсли;

КонецФункции

Исправлено в релизе:
2.1.2

Код ошибки:
20007404

Дата публикации:
17 августа 2012 г.

Описание:
При выгрузке области данных в файл не указываются типы ссылок на справочник ИдентификаторыОбъектовМетаданных, в результате не срабатывает подмена ссылок при загрузке и все загруженные ссылки на этот справочник оказываются «битыми» (отображаются в виде «Объект не найден»).

Исправлено в релизе:
2.1.2

Код ошибки:
10110815

Дата публикации:
17 августа 2012 г.

Описание:
При загрузке области данных из файла не выполняется подмена ссылок на справочник ИдентификаторыОбъектовМетаданных, в результате все загруженные ссылки на этот справочник оказываются «битыми» (отображаются в виде «Объект не найден»).

Исправлено в релизе:
2.1.2

Код ошибки:
20007424

Дата публикации:
17 августа 2012 г.

Описание:
Нельзя настроить обмен данными из локального рабочего места с приложением в Интернете.
Возникает ошибка вида:
«<ОбщийМодуль.РегламентныеЗаданияСервер.Модуль(159)>: Регламентное задание не найдено.
Возможно, оно удалено другим пользователем.».

Способ исправления:
В общем модуле АвтономнаяРаботаСлужебный заменить процедуру ОтключитьАвтоматическуюСинхронизациюДанныхСПриложениемВИнтернете
на такую:
Процедура ОтключитьАвтоматическуюСинхронизациюДанныхСПриложениемВИнтернете() Экспорт

Если Не ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда

РегламентныеЗаданияСервер.УстановитьИспользованиеРегламентногоЗадания(
Метаданные.РегламентныеЗадания.СинхронизацияДанныхСПриложениемВИнтернете, Ложь
);

КонецПроцедуры

Планируется исправить в релизе:
2.1.2

Код ошибки:
10111971

Дата публикации:
14 августа 2012 г.

Описание:
Невозможно пометить на удаление завершенный бизнес-процесс из формы бизнес-процесса.

Способ исправления:
В модуле формы бизнес-процесса Задание.ФормаБизнесПроцесса в обработчике ПриСозданииНаСервере
заменить строку:
ТолькоПросмотр = Объект.Завершен;
на
Если Объект.Завершен Тогда
Для каждого Элемент Из Элементы Цикл
Если ТипЗнч(Элемент) <> Тип(«ПолеФормы») И ТипЗнч(Элемент) <> Тип(«ГруппаФормы») Тогда
Продолжить;
КонецЕсли;
Элемент.ТолькоПросмотр = Истина;
КонецЦикла;
КонецЕсли;

Исправлено в релизе:
2.1.2

Код ошибки:
20007335

Дата публикации:
14 августа 2012 г.

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

Исправлено в релизе:
2.1.2

Код ошибки:
10088978

Дата публикации:
10 августа 2012 г.

Описание:
Технология обмена по правилам обмена БСП не поддерживает обмен движениями документов.

Способ обхода:
Если необходимо синхронизировать движения документов, то для этого в состав плана обмена следует включать регистры, по которым документ выполняет движения и создавать ПВД для наборов записей этих регистров.
По аналогии, как в технологии обмена РИБ.

Код ошибки:
20006958

Дата публикации:
10 августа 2012 г.

Описание:
В некоторых случаях, при запуске в толстом клиенте, управляемое приложение, возникает ошибка:
<ХранилищеНастроек.ХранилищеВариантовОтчетов.МодульМенеджера(42,21)>: Переменная не определена (ВариантыОтчетов)
ОтчетИнформация = >ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(КлючОтчета);
<ХранилищеНастроек.ХранилищеВариантовОтчетов.МодульМенеджера(121,21)>: Переменная не определена (ВариантыОтчетов)
ОтчетИнформация = >ВариантыОтчетов.СформироватьИнформацВиюОбОтчетеПоПолномуИмени(КлючОтчета);
<ХранилищеНастроек.ХранилищеВариантовОтчетов.МодульМенеджера(205,21)>: Переменная не определена (ВариантыОтчетов)
ОтчетИнформация = >ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(КлючОтчета);
<ХранилищеНастроек.ХранилищеВариантовОтчетов.МодульМенеджера(254,20)>: Переменная не определена (ВариантыОтчетов)
ОтчетИнформация = >ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(КлючОтчета);
<ХранилищеНастроек.ХранилищеВариантовОтчетов.МодульМенеджера(297,21)>: Переменная не определена (ВариантыОтчетов)
ОтчетИнформация = >ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(КлючОтчета);
<ХранилищеНастроек.ХранилищеВариантовОтчетов.МодульМенеджера(353,21)>: Переменная не определена (ВариантыОтчетов)
ОтчетИнформация = >ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(КлючОтчета);
<ХранилищеНастроек.ХранилищеВариантовОтчетов.МодульМенеджера(145,24)>: Переменная не определена (Пользователи)
ТекущийПользователь = >Пользователи.ТекущийПользователь();

Способ исправления:
Внести изменения в конфигурацию:
1) общим модулям ВариантыОтчетов и Пользователи установить признак «Вызов сервера»
2) очистить свойство конфигурации «Хранилище вариантов отчетов» и задать его во всех отчетах конфигурации

Исправлено в релизе:
2.1.2

Код ошибки:
10111163

Дата публикации:
1 августа 2012 г.

Описание:
При попытке перейти к присоединенным файлам возникает ошибка «Недостаточно прав для просмотра».

Способ исправления:
Включить в роль «Базовые права» право просмотра справочника «Тома хранения файлов».

Исправлено в релизе:
2.1.2

Код ошибки:
20005632

Дата публикации:
1 августа 2012 г.

Описание:
При печати с использованием макета MS Word из макета не копируются изменения стандартных стилей.

Способ воспроизведения:
Изменить один из используемых стандартных стилей в макете, например шрифт по умолчанию.

Способ обхода:
После получения печатной формы
ПечатнаяФорма = УправлениеПечатьюКлиент.ИнициализироватьПечатнуюФорму(.

скопировать стили из макета:
ПечатнаяФорма.COMСоединение.ActiveDocument.CopyStylesFromTemplate(ПутьКФайлуМакета);

При этом, файл макета не должен быть открыт (например, можно сохранить макет в отдельный временный файл).

Исправлено в релизе:
2.1.2

Код ошибки:
10111160

Дата публикации:
1 августа 2012 г.

Описание:
При сохранении печатной формы документа не использующего присоединенные файлы возникает ошибка:
<ОбщийМодуль.ПрисоединенныеФайлы.Модуль(434)>: Поле объекта не обнаружено (ПутевкаПрисоединенныеФайлы)
Возврат ПравоДоступа(«Добавление», Метаданные.Справочники[ИмяХранилища])

Способ исправления:
В общем модуле ПрисоединенныеФайлы в функции КОбъектуМожноПрисоединятьФайлы поменять строки местами.
Заменить строки:
Возврат ПравоДоступа(«Добавление», Метаданные.Справочники[ИмяХранилища])
И Метаданные.Справочники.Найти(ИмяХранилища) <> Неопределено
На строки:
Возврат Метаданные.Справочники.Найти(ИмяХранилища) <> Неопределено
И ПравоДоступа(«Добавление», Метаданные.Справочники[ИмяХранилища])

Исправлено в релизе:
2.1.2

Код ошибки:
20006637

Дата публикации:
27 июля 2012 г.

Описание:
Ошибка при открытии объекта, подключенного к подсистеме «Контактная информация».

Способ исправления:
В общем модуле УправлениеКонтактнойИнформациейКлассификаторы исправить строку
АдресныйКлассификатор.ПризнакАктуальности КАК АльтернативныеНазвания
на
АдресныйКлассификатор.ПризнакАктуальности КАК ПризнакАктуальности

Исправлено в релизе:
2.1.2

Код ошибки:
20006712

Дата публикации:
27 июля 2012 г.

Описание:
При включении отладки загрузки некорректно получается имя внешней обработки отладки загрузки.

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

Способ исправления:
Модуль ОбменДаннымиСервер
Функция ПолучитьОбработкуОбменаДаннымиДляЗагрузки(СтруктураНастроекОбмена)
заменить строку
ОбработкаОбменаДанными.ИмяФайлаВнешнейОбработкиОтладкиВыгрузки = СтруктураНастроекОбмена.ИмяФайлаОбработкиДляОтладкиЗагрузки;
на строку
ОбработкаОбменаДанными.ИмяФайлаВнешнейОбработкиОтладкиЗагрузки = СтруктураНастроекОбмена.ИмяФайлаОбработкиДляОтладкиЗагрузки;

Способ обхода:
Использовать обработку в составе конфигурации для выполнения кода обработчиков загрузки.

Исправлено в релизе:
2.1.1.13

Код ошибки:
20006771

Дата публикации:
27 июля 2012 г.

Описание:
Невозможно выполнить обмен в сервисе при условии, что одна из конфигураций на базе БСП 2.0, а вторая – на базе БСП 2.1.1.12

Способ исправления:
1) Установить новую версию конфигурации «Конвертация данных» 2.1.6.2.
2) В БСП 2.1 в обработке КонвертацияОбъектовИнформационныхБаз внести следующие изменения:
Заменить функцию РежимСовместимостиСБСП20 на
Функция РежимСовместимостиСБСП20()

Если ПолеРежимСовместимостиСБСП20 = Неопределено Тогда

ПолеРежимСовместимостиСБСП20 = (Конвертация.РежимСовместимости = «»
Или Конвертация.РежимСовместимости = «РежимСовместимостиСБСП20»)
И Не ЭтоМодельСервиса;

КонецФункции
В процедуре ЗагрузитьПравилаОбмена
после строки Конвертация.Вставить(«ВерсияФормата», Значение);
вставить следующие строки:
РежимСовместимости = ПравилаОбмена.ПолучитьАтрибут («РежимСовместимости»);
Если РежимСовместимости <> Неопределено Тогда
Конвертация.Вставить(«РежимСовместимости», РежимСовместимости)
КонецЕсли;

Исправлено в релизе:
2.1.2

Код ошибки:
20006651

Дата публикации:
27 июля 2012 г.

Описание:
Обновление информационной базы в модели сервиса завершается с ошибкой:
<ОбщийМодуль.ОбменДаннымиСервер.Модуль(6233)>: Ошибка при вызове метода контекста (Установить)
Константы.ДатаОбновленияПовторноИспользуемыхЗначенийМРО.Установить(ТекущаяДата());
по причине:
Нельзя использовать таблицу без указания всех разделителей с независимым использованием разделяемых данных
объект: ‘Константа.ДатаОбновленияПовторноИспользуемыхЗначенийМРО’

Способ обхода:
В общем модуле ОбменДаннымиСервер заменить процедуру УстановитьДатуОбновленияПовторноИспользуемыхЗначенийМРО на следующую:
Процедура УстановитьДатуОбновленияПовторноИспользуемыхЗначенийМРО() Экспорт

Если ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда

УстановитьПривилегированныйРежим(Истина);
// записываем дату и время компьютера сервера – ТекущаяДата()
// метод ТекущаяДатаСеанса() использовать нельзя.
// Текущая дата сервера в данном случае используется в качестве ключа уникальности кэша механизма регистрации объектов.
Константы.ДатаОбновленияПовторноИспользуемыхЗначенийМРО.Установить(ТекущаяДата());

Ошибка при вызове конструктора (WSОпределения) Модуль 198 и 504

Ошибка при вызове конструктора (WSОпределения) Модуль 198 и 504

Добрый день! Уважаемые читатели и гости популярного компьютерного блога pyatilistnik.org. В прошлый раз мы с вами решили ошибку » db query error please try later», и восстановили работу сайта на платформе 1С Битрикс. Сегодня я хочу поделиться небольшой заметкой, как выйти из ситуации, когда не работает кнопка «Заполнить по ИНН» в Справочнике Контрагенты при создании нового. Выдается ошибка «ОбщийМодуль.ОбщегоНазначенияПовтИсп.Модуль(198): Ошибка при вызове конструктора (WSОпределения) WSОпределения = Новый(Тип(«WSОпределения»). Давайте разбираться в чем собственно дело.

Причины ошибок с модулем 198-504

Вся проблема связана с неправильным и устаревшим сертификатом, это бывает если вы давно не обновляли свою версию 1С, а в этот момент как раз истек срок сертификата, который участвует в подключении к внешним сервисам, например, npchk.nalog.ru или api.orgregister.1c.ru.

Вот так вот выглядит более полный текст ошибки:

WSОпределения = Новый(Тип(«WSОпределения»), Параметры);

При вызове веб-сервиса произошла ошибка. При создании описания сервиса произошла ошибка. URL сервиса: https://api.orgregister.1c.ru/orgregister/v7?wsdl

Ошибка работы с Интернет: Удаленный узел не прошел проверку

10060 – Ошибка соединения с сервером

HOST – npchk.nalog.ru[81.177.31.8]; PORT – 80
Connection timed outTraffic Inspector HTTP/FTP/Proxy server (3.0.2.912)

по причине:
Ошибка работы с Интернет: произошел таймаут при ожидании ответа шлюзу (504)

Как решить проблему

  • Самым быстрым методом? будет замена сертификата cacert.pem, который располагается в папке с вашим клиентом. Скачать cacert.pem можно о официального сайта по ссылке:

В итоге у вас будет архив с сертификатом cacert.pem, распакуйте его. Далее, откройте вашего клиента, где вы получаете ошибку при вызове конструктора WSОпределения. И перейдите по пути:

Если вы теряетесь в своих версиях, то попробуйте произвести поиск по cacert.pem в папке C:Program Files (x86) и посмотрите, где у вас нужно подменить, этот файл. Меняете его на свежий и радуетесь жизни.

  • Второй метод, заключается в использовании обработки в 1С. Скачайте файл обработка.epf

ОБЯЗАТЕЛЬНО запустите его от имени администратора, иначе можете получить ошибку:


Автор: Вячеслав Михайлов, Solutions Architect

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

Мы разберемся с процессом аутентификации пользователя, работой технологии единого входа (Single sign-on/SSO), дадим общее представлении о технологии OAuth2 и принципах ее работы, не углубляясь в особенности конкретной технической реализации. В следующей статье в качестве примера удачной реализации мы рассмотрим библиотеку Thinktecture Identity Server v3, подробнее остановимся на ее функциональных возможностях, поговорим, как собрать минимальный набор компонент, необходимый для работы в микросервисной архитектуре и достойный использования в боевой системе. В третьей части мы покажем, как расширять эту библиотеку, подстраиваясь под нужды вашей системы, а завершит цикл статей разбор различных сценариев, встречавшихся в жизни многих разработчиков с рекомендациями для каждого случая.

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

Идентификация — процесс определения, что за человек перед нами. Аутентификация — процесс подтверждения, что этот человек именно тот, за кого себя выдает. Авторизация — процесс принятия решения о том, что именно этой аутентифицированной персоне разрешается делать. То есть, это три разных, последовательных и взаимно не заменяемых понятия. Идентификацию часто подразумевают в составе аутентификации. Самое главное — четко различать аутентификацию и авторизацию.

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

При использовании HTTP-протокола простейший способ аутентификации — Basic access authentication. В принципе этот протокол устарел и уже редко используется в интернете, особенно в незащищенных соединениях, но еще сохраняется во внутрикорпоративных системах, просто потому что некоторые из них созданы достаточно давно. Стоит разобраться, как он работает.

HTTP Basic Authentication

Первым, что при обращении к защищенному ресурсу сервер выдаст пользователю, не имеющему доступа, будет ошибка 401 Unauthorized. При этом ответ также содержит информацию о типе аутентификации (в нашем случае – Basic), который он может принимать, и контекст, в рамках которого эта аутентификация действует (Realm). Пользователь вводит логин и пароль, они упаковываются в Base64 и отправляются на сервер для проверки. Здесь существуют различные опасности. Самая распространенная — угроза man-in-the-middle attack, или атаки посредника, в ходе которой при использовании незащищенного соединения учетные данные могут перехватить злоумышленники в момент передачи от клиента к серверу или обратно.

HTTP Digest Authentication

Следующим этапом развития технологии стала чуть более сложная система HTTP digest authentication, которая исключает передачу учетных данных в открытом виде — здесь для проверки используется MD5-хеш с некоторыми примесями, что позволяет избежать подбора логина и пароля. Конечно, этот алгоритм выглядит более надежным, но и он подвержен целому ряду не самых сложных атак. Например, вот тут можно почитать об атаках более подробно.

Forms Authentication

Позднее появился процесс Forms authentication, при котором аутентификация происходит на более высоком уровне модели абстракции. HTTP-сервер при этом не сообщает об ошибке доступа, а просто перенаправляет неаутентифицированного пользователя на другую страницу. Обычно на этой странице отображаются поля для ввода логина и пароля, после заполнения которых формируется POST-запрос с данными и через защищенный канал направляется на сервер. Серверная сторона в свою очередь возвращает пользователю токен или идентификатор сессии, который сохраняется в Cookies и в дальнейшем используется для доступа к защищенному ресурсу.

Token Authentication

Следующее поколение способов аутентификации представляет Token Based Authentication, который обычно применяется при построении систем Single sign-on (SSO). При его использовании запрашиваемый сервис делегирует функцию проверки достоверности сведений о пользователе другому сервису. Т. е. провайдер услуг доверяет выдачу необходимых для доступа токенов собственно токен-провайдеру (Identity provider). Это то, что мы видим, например, входя в приложения через аккаунты в социальных сетях. Вне IT самой простой аналогией этого процесса можно назвать использование общегражданского паспорта. Официальный документ как раз является выданным вам токеном — все государственные службы по умолчанию доверяет отделу полиции, который его вручил, и считает паспорт достаточным для вашей аутентификации на протяжении всего срока действии при сохранении его целостности.

На схеме хорошо видно, как и в какой последовательности приложения обмениваются информацией при использовании аутентификацией по токенам.

На следующей схеме дополнительно отражены те этапы взаимодействия, в которых пользователь принимает непосредственное участие. Этот момент и является недостатком подобной схемы — нам всегда нужен пользователь, чтобы получить доступ к ресурсу.

OAuth2 & Open ID Connect

Дальнейшее усовершенствование процесса понадобилось ввиду того, что токен-аутентификация требует присутствия пользователя в момент получения доступа к защищенному ресурсу. Потому что Identity provider при передаче ему управления будет с пользователем взаимодействовать, запрашивая, например, логин и пароль.

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

В 2006 году в ходе работы над реализацией протокола Open ID для Twitter обнаружилась потребность в новом открытом протоколе авторизации. В 2007 инженеры Google и AOL начали совместную работу над ним, а в 2009 Twitter предложил своим пользователям решение, делегировавшее сторонним сервисам доступ к аккаунтам и основанное на протоколе OAuth. Три года спустя была опубликована новая версия — OAuth 2, упростившая разработку клиентских приложений и получившая целый ряд новых возможностей, среди которых оказалось и обновление токена без участия пользователя. Многие сервисы начали использовать этот протокол еще до его официального утверждения.

Разбираемся детально ху из ху

В данный момент на слуху следующие протоколы:

  1. OpenID — для проверки учетных данных пользователя (identification & authentication).
  2. OAuth — про то, чтобы получать доступ к чему-то.
  3. OpenID Connect — и про и то, и про другое одновременно.

Все три протокола позволяют пользователю не разглашать свои секретные логин и пароль недоверенным приложениям. OpenID & OAuth разрабатывались параллельно вплоть до 2014 года и объединились в итоге в OpenID connect.

OpenID 1.0 (2006) & OpenID 2.0 (2007) позволяли приложению(арб) запрашивать у доверенного сервера (authority) проверку пользователя(user). Отличия между версиями для нас несущественны.

  • User –> App: Привет, это Миша.
  • App –> Authority: Вот «это» Миша?
  • Authority и User общаются тет-а-тет.
  • Authority –> App: Да, это Миша.

OpenID Attribute Exchange 1.0 (2007) расширяет OpenID 2.0 разрешая получать и хранить профиль пользователя.

  • User –> App: Привет, это Миша.
  • App –> Authority: Вот «это» Миша? И если это Миша, то пришлите мне его email.
  • Authority и User общаются тет-а-тет.
  • Authority –> App: Да, это Миша. И его email xxx@xxx.xxx.

OAuth 1.0 (2010) позволяет пользователю разрешать приложению получать ограниченный доступ на третьесторонних серверах(third-party server), доверяющих удостоверяющему центру.

  • App –> User: Mы бы хотели получить ваши картинки с другого сервера.
  • Authority и User общаются тет-а-тет.
  • Authority –> App: Вот вам билет (access token) на 15 минут.
  • App –> Third-party server: Нам тут по билету можно получить фотографии для этого пользователя.

OAuth 2.0 (2012) делает тоже самое, что и OAuth 1.0, но только протокол существенно поменялся и стал проще.

OpenID Connect (2014) объединяет возможности OpenID 2.0, OpenID Attribute Exchange 1.0, и OAuth 2.0 в один общий протокол. Он позволяет приложениям использовать удостоверяющий центр для:

  • Проверять учетные данные пользователя.
  • Получать профиль пользователя (или его части).

Важно понимать, что OpenID Connect не дает доступ к внешним ресурсам. Он использует OAuth 2.0 для того, чтобы представить параметры профиля как будто это такие ресурсы.

Обычно в системах встречаются разные компоненты: пользователи, работающие через браузер, пользователи, взаимодействующие с сервером через мобильные приложения, и просто серверные приложения, нуждающиеся в принадлежащих вам данных, хранящихся на других серверах, доступ к которым осуществляется через Web API.

Single sign-on — технология единого входа — позволяет пользователю переключаться между различными приложениями без повторной аутентификации. Используя SSO можно избежать множественных логинов, так что пользователь просто не будет замечать этих переключений. При этом ситуации, когда в рамках вашей инфраструктуры таких приложений будет больше одного, встречаются постоянно. Технология единого входа особенно удобна в больших энтерпрайз-системах, состоящих из десятков приложений, слабо связанных между собой. Вряд ли пользователи будут довольны, вводя логин и пароль при каждом обращении к системе учета рабочего времени, корпоративному форуму или внутренней базе документов.

В качестве реализации мы рассматриваем протокол OAuth2. В принципе, существуют и другие, например, Kerberos, успешно взаимодействующий с Windows, но в случае гетерогенной сети, в которой существуют компьютеры, использующие и Windows-, и Mac-, и UNIX-системы, использовать проприетарные протоколы зачастую неудобно. Тем более, это касается случаев, когда доступ к вашим сервисам осуществляется через веб — здесь OAuth2 оказывается лучшим кандидатом.

На рисунке выше показано, какие именно протоколы используются при каждом типе взаимодействия.

Как мы знаем из раздела «разбираемся детально ху из ху», OpenID Сonnect нужен, чтобы получить у пользователя его учетные данные и проверить их. OAuth 2.0 нужен, чтобы получать токены доступа и с ними обращаться к ресурсам.

Сервис выдачи токенов

Open ID Connect Provider — важнейший объект всей конструкции централизованного сервиса аутентификации, он также может называться Security Token Service, Identity Provider authorization server и т. д. Различные источники называют его по-разному, но по смыслу это сервис, который выдает токены клиентам.

Основные функции:

  • Аутентифицировать пользователей, используя внутреннее хранилище пользователей или внешний источник (например, Active Directory).
  • Управлять клиентами (хранить) и аутентифицировать их.
  • Предоставлять управление сессией и возможность реализации Single sing-on.
  • Выдавать identity-токены и access-токены клиентам.
  • Проверять ранее выданные токены.

Клиент

Client — устройство или программа (браузер, приложение), которым требуется либо токен для аутентификации пользователя, либо токен для доступа к какому-то ресурсу (подразумевается, что данный ресурс «знаком» с тем конкретным «Security Token Service» у которого клиент запрашивает токен для доступа).

Пользователь

User — собственно конечный пользователь — человек.

Область (scope)

Scope — идентификатор ресурса, к которому клиент хочет получить доступ. Список scope посылается в адрес сервиса выдачи токенов в составе запроса на аутентификацию.

По умолчанию все клиенты имеют возможность запрашивать любые области, но это можно (и нужно) ограничивать в конфигурации сервиса выдачи токенов.

Scopes бывают двух видов:

  1. Identity scopes — это запрос информации о пользователе. Его имя, профиль, пол, фотография, адрес электронной почты и т. д.
  2. Resource scopes — имена внешних ресурсо (Web APIs), к которым клиент хочет получить доступ.

Запрос на аутентификацию

Authentication/Token Request — процесс запроса аутентификации.

В зависимости от того какие области (scopes) запрошены, сервис выдачи токенов вернет:

  1. Только Identity Token, если запрошены только Identity scopes.
  2. Identity Token и Access Token, если запрошены также и Resources scopes.
  3. Access Token и Refresh Token, если запрошeн Offline Access.

Более подробно про процесс аутентификации можно прочесть в разделе «процесс aутентификации».

Токен личности

Identity Token — подтверждение аутентификации. Этот токен содержит минимальный набор информации о пользователе.

Токен доступа

Access Token — информация, что конкретному пользователю разрешается делать. Клиент запрашивает Access Token и затем использует его для доступа к ресурсам (Web APIs). Access Token содержит информацию о клиенте и пользователе, если она присутствует. Важно понимать, что есть такие типы авторизации, при которых пользователь в процессе непосредственно не участвует (подробнее об этом в следующей части)

Токен обновления

Refresh Token — токен, по которому STS вернет новый Access Token. В зависимости от режима работы, Refresh Token может быть многоразовым и одноразовым. В случае с одноразовым токеном, при запросе нового Access Token будет также сформирован готовый Refresh Token, который следует использовать при повторном обновлении. Очевидно, что одноразовые токены более безопасны.

Более подробно о составе токенов в разделе «структура токена».

При обращении пользователя к клиенту, тот перенаправляет пользователя на Open ID Connect Provider, который запрашивает у пользователя логин и пароль. В случае успешного прохождения проверки параметров аутентификации он возвращает назад identity token и access token, с которыми пользователь может обращаться к защищенному ресурсу.

Формат

В реализации OAuth2 используется так называемый jwt-токен, который состоит из трех частей. Допустим, при обращении к Identity provider вы отправляете логин/пароль и в ответ получаете токен. Он будет включать в себя: Header (заголовок), Payload (контент) и Signature (подпись). На сайте jwt.io его можно декодировать и посмотреть содержимое формате JSON. На этом сайте вы также найдете описание правил формирования jwt-токенов.

В том, что токены в процессе обмена передаются незашифрованными, ничего страшного нет. Мы изначально исходим из предположения, что коммуникация происходит по защищенному HTTPS-каналу, и повторное шифрование токена было бы избыточным. Единственное, в чем нам нужно убедиться – то, что токен не был подменен или сфальсифицирован на клиентской стороне, для этого достаточно иметь подпись и проверять ее на сервере. Кроме того, токен не содержит никакой критически важной информации.

Кроме identity tokens, есть еще и аccess tokens, которые содержат информацию о выданных пользователю клеймах. Срок действия access token достаточно короткий, потому что его хищение может обеспечить несанкционированный доступ к ресурсу. Т. е. злоумышленник, если ему удастся заполучить токен этого типа, доступ получит на очень непродолжительное время. Для получения нового access token используется refresh token, который обычно не фигурирует в незащищенных средах, в частности в режиме доступа из браузера он вообще не используется. Какие именно токены будут возвращены клиенту в процессе аутентификации, разберемся в следующей части.

Основные поля

Кратко остановимся на том, какие есть стандартные полях в токене и зачем они нужны:

  • iss — адрес или имя удостоверяющего центра.
  • sub — идентификатор пользователя. Уникальный в рамках удостоверяющего центра, как минимум.
  • aud — имя клиента для которого токен выпущен.
  • exp — срок действия токена.
  • nbf — время, начиная с которого может быть использован (не раньше чем).
  • iat — время выдачи токена.
  • jti — уникальный идентификатор токен (нужен, чтобы нельзя был «выпустить» токен второй раз).

В этой статье мы постарались дать теоретический и терминологический фундамент, который понадобится нам создании работающего решения в следующих статьях.

Минимальная реализация интеграция Identity Server в ваше приложение выглядит так:

Минимальная реализация интеграции веб-клиента с Identity Server:

Минимальная реализация интеграции веб-API с Identity Server:

Почему-то не могу написать в свою предыдущую тему по этому вопросу, дублирую текст здесь с дополнением. Стоит задача разработать мобильное приложение для 1С:ЗУП для рядового сотрудника. У пользователя должна быть возможность просматривать свой расчетный листок и личные данные (кадровые). Есть центральная база 1С:ЗУП. В ней разработаны веб-сервисы, опубликованы на веб-сервере, используется IIS. При публикации указываю «Использовать аутентификацию операционной системы». Мобильное приложение также опубликовано на веб-сервере, при публикации выставлен флаг «Использовать аутентификацию операционной системы на веб-сервере». При добавлении ИБ в мобильном приложении (на мобильном устройстве) указываю доменного пользователя и его пароль, мобильное приложение успешно загружается с веб-сервера. Проблема в том, что при обращении к веб-сервису из мобильного приложения система выдает ошибку: «Аутентификация пользователя не выполнена», при обращении указываю доменного пользователя и его пароль (для WSОпределения и для WSПрокси). Если вместе с веб-сервисами опубликовать само приложение (1С:ЗУП), то при обращении к нему по адресу в веб-браузере происходит запрос на ввод пользователя и пароля (доменная учетка), ввожу, принимает, захожу в приложение. Если же через браузер обращаюсь к веб-сервису, также запрашивает пользователя и пароль, ввожу, но не прохожу авторизацию. В IIS анонимная проверка подлинности отключена, включены «Проверка подлинности Windows» (хотя пробовал «Обычная проверка подлинности» — ситуация та же). Доменный пользователь добавлен в группу IIS_IUSRS. Никак не могу разобраться с решением этой проблемы, просьба помочь, кто в теме, заранее спасибо. Дополнение: Если в браузере ввожу адрес, по которому расположен веб-сервис то выпадает окошко «Необходима авторизация» с текстом «Для доступа на сервер требуется указать имя пользователя и пароль. Сообщение сервера: 192.168.100.93». Ввожу логин и пароль, выпадает это же окошко, но с несколько другим текстом: «Для доступа на сервер требуется указать имя пользователя и пароль. Сообщение сервера: 1C:Enterprise 8.3», снова ввожу тот же логин и пароль (доменная учетка) и выпадает окошко с первым текстом. Если при первом вводе логина и пароля намеренно сделать ошибку при вводе логина и пароля, то окошко со вторым текстом не выпадает, а снова выпадает первое. Т.е. можно сделать вывод, что авторизация проходит, скажем так, «частично».

Не осилил — много букавок… Но по теме: Веб-сервер должен быть запущен от пользователя домена, для которого создан в базе 1С пользователь с аутентификацией Windows.

+ То есть, веб-сервер обращается в 1С под одним единственным пользователем.

У меня на данный момент всё работает и в домене (8.2) и в домашней сети (8.3). Проблем не замечаю. Веб-сервер — Апач.

Заказчик требует принципиально IIS, так что работа с Апач не пойдет.

Я не утверждаю, что проблема в веб-сервере, но не исключаю. Можешь гадать на кофейной гуще, а можешь проверить.

Такой вариант в принципе не пойдет (хотя проверил, не работает). Суть в том, что при отработке веб-сервиса мне важно знать, под каким пользователем он исполняется, для того, чтобы сформировать тот же расчетный листок именно для этого пользователя (сотрудника). Т.е. если использовать анонимную проверку подлинности и при вызове веб-сервиса со стороны мобильного приложения передавать конкретного пользователя 1С центральной базы и его пароль, веб-сервис отработает и я буду знать, что это за пользователь, но такой вариант не пойдет из соображений безопасности.

«хотя проверил, не работает» Реши проблему с правами на Апаче, потом бубешь решать проблемы с IIS. По остальному — IIS тоже будет в 1С под одним пользователем ломиться, так что, проблему решай другими средствами. У меня есть html отчет — показывает материальный подотчет по сотруднику: сотрудник выбирает себя в поле на странице и ниже вываливается его подотчет.

Покажи настройки «Проверка подлинности» в IIS (у web сервиса)

Стоит «Обычная проверка подлинности» и «Проверка подлинности Windows», анонимная проверка подлинности отключена. Причем выставляю только обычную, но после публикации веб-сервисов и перезапуске самого веб-сервера автоматом дополнительно включается проверка подлинности Windows.

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

У «Проверка подлинности Windows» какой поставщик стоит?

Сервак на котором поднят веб сервис и на котором лежит база один?

Пропробуй оставь только «Negotiate»

что-то тут не понятно… «Суть в том, что при отработке веб-сервиса мне важно знать, под каким пользователем он исполняется, для того, чтобы сформировать тот же расчетный листок именно для этого пользователя (сотрудника)…» Т.е. предлагается всех кому начисляем ЗП завести пользователями в базу ЗУП?

это же просто.. как бы помягче сказать.. неправильно :)

Да Ок, сейчас попробую Не для всех, из определнного перечня, список пользователей относительно небольшой

Зачем было огород из web сервиса городить?

Что тут не правильного? Почему «огород» и почему нет?

где-то на официальном ресурсе 1С я видел статью, в которой объяснялось что для веб-сервисов: — для аутентификации средствами 1С на IIS надо ставить Анонимную проверку подлинности, и при работе с веб-сервисом (на клиенте) указывать имя пользователя и пароль 1С; — для аутентификации средствами ОС на IIS надо ставить Обычную проверку подлинности, и при работе с веб-сервисом (на клиенте) указывать имя пользователя и пароль ОС (пользователь 1С будет сопоставляться с пользователем 1С по данным Аутентификации ОС в 1С (ну как обычно это делают остальные клиенты 1С)); Имхо, Проверка подлинности Windows, это немного другая история, и о ней там ничего не было сказано.

Проверку подлинности Windows можно использовать только в среде интрасети.

1-й пункт работает. 2-й пункт как раз и не работает и нужен именно такой подход с авторизацией

С точки зрения сетевой аутентификации первые два способа опасные (пользователь и пароль передается в открытом виде). Эту проблему решают работой веб-сервера по SSL, тогда трафик попросту шифруется ключами сертификата. Проверка подлинности Windows безопасная — никакой пароль не передается вообще, но она работает только в локальной сети.

нужно в каком то отдельном приложение показывать данные? Если нет, то опубликовать web клиент.

и как ты указываешь имя пользователя во втором случае?

С проверкой подлинности Windows понятно, но не работает с обычной проверкой подлинности. При этом как и говорил выше вместе с веб-сервисами публикуется и веб-клиент и с веб-клиентом проблем нету: переходим по адресу в браузере, вбиваваем доменные логин и пароль и приложение запускается. А с веб-сервисами — беда.

ну ты не сравнивай, так-то, браузер с 1C-ным SOAP-клиентом, это охрененно разные вещи.

Веб-клиент самого ЗУП опубликован, но нужно простое мобильно приложение, грубо говоря с двумя кнопками: «Показать расчетный листок» и «Показать личные данные», мобильное приложение с помощью разработанных в ЗУП веб-сервисов и опубликованных на веб-сервере должно получать данные по запросу из центральной базы (ЗУП). Пример: пользователь Вася запускает мобильное приложение на своем планшете, нажимает кнопку «Показать расчетный листок», вводит свой доменный логин и пароль, и получает свои данные по ЗП.

Так, как ты хочешь, всё равно не получится. Так что…

вырубить анонимную, поставить только обычную, и имя пользователя: DOMAINUSER должно работать

DOMAIN — краткое имя домена

Почему нет? Если использовать анонимную проверку подлинности и вместо доменных логина и пароля использовать логин и пароль пользователя 1С при обращении к веб-сервису со стороны мобильного приложения, все отлично отрабатывает, я знаю в коде операции веб-сервиса центральной базы ЗУП, какой пользователь просит данные по ЗП, и даю ему его данные.

и в 1С должен быть пользователь с включенной аутентификацией ОС с такой записью о учетке DOMAINUSER, кроме того у него должны быть права на отработку этого веб-сервиса

Попробовал, ничего не изменилось.

еще попробуй имя пользователя указать просто USER, чета я сомневаться стал в том что можно домен вообще указать..

имя пользователя и пароль только на латиннице?

Пользователь с включенной аутентификацией ОС есть (при этом аутентификация 1С:Предприятия отключена). Права на обработку веб-сервиса — что под этип подразумевается? разрешения для пользователя стоят, кроме того пользователь включен в группу IIS_IUSRS.

Да, все везде на латинице.

журнал аудита посмотреть не предлагать?

А не проще по мылу расчетки рассылать ежемесячно?

Оно-то может и проще, но стоит именно такая задача. Думаю, все упирается в какие-то настройки, о которых я, к сожалению, не знаю.

у каждого метода веб-сервиса в ролях 1С есть право Используется.

Как вариант сделать обычный транспорт. 1) Веб Сервер с ПХП, к нему обращаются юзеры со своими учетками. 2) На внутри пхп выполнять вызов вебсервиса и параметром передавать туда имя пользователя. 3) Отдать то что получилось в 2)

у меня кончились идеи.. :) после этого я обычно проверяю сам и прошу версию платформы, но так лениво..

Спасибо, возможно. Но хочется верить, что задачу можно решить имеющимися средствами.

Я на всякий случай оставлю версию платформы: 8.3.5.1068, IIS 7.5 :)

Вопрос по-прежнему актуален, возможно, у кого-то появятся еще идеи.

Я так и не понял: ты что, утверждаешь, что где-то когда-то видел, чтобы веб-сервис 1С исполнялся от имени разных пользователей домена? Что-то из разряда фантастики…

+ Немного не правильно выразился: веб-сервер запущен под контретным пользователем домена. К веб-сервису 1С обращается веб-сервер, соответственно, всегда под одним пользователем. Разве может веб-сервер исполнять 10 процессов под 10 пользователями домена?

Допустим, ты прав, к веб-сервису обращается веб-сервер, запущенный под конкретным пользователем домена, и никак иначе быть не может, т.е. невозможно обращаться к веб-сервису от имени разных пользователей домена, только от имени пользователя, под которым запущен веб-сервер. Почему тогда при обращении к самому приложению (не к веб-сервису), опубликованному на веб-сервере, через веб-клиент (браузер) аутентификация ОС срабатывает? В чем разница?

ХЗ, перед таким вопросм я бессилен… :)

не знаю деталей работы веб-сервера, но в ОС есть функционал олицетворения (имперсонализации), когда поток временно получает права клиента, запрос которого обрабатывает. Естественно, клиента перед этим проверяют, и, обычно, делают это без запроса пароля — средствами доверия в сети.

провел испытания.. По тому что написано в : похоже что это так было в 8.2. В 8.3 так: пункт 1 (про анонимную на IIS) — все также; пункт 2 (про обычную на IIS) — имя пользователя и пароль передаваемый SOAP-клиентом в HTTP запросе должны совпадать с именем и паролем пользователя 1С предприятия. Проверка подлинности Windows на IIS — мне так и не удалось заставить работать SOAP-клиента 1C с такой аутентификацией на IIS, подозреваю что это не возможно в принципе, ибо такая аутентификация подразумевает двухсторонний обмен данными между клиентом и сервером, т.е. несколько запросов туда сюда, он так попросту не умеет, а браузеры умеют.

Уточнение. пункт 2 (про обычную на IIS) — имя пользователя и пароль передаваемый SOAP-клиентом в HTTP запросе для аутентификации на IIS должны совпадать с именем и паролем пользователя 1С предприятия. Т.о. у нас и в AD и в 1С должен быть пользователь с одинаковым имененм и паролем.

Т.о. твою задачу проще всего решить используя анонимную аутентификацию на IIS и создавая пользователей в 1С для получения РЛ с правами на выполнение метода веб-сервиса.

Не правильно. У пользователя 1С вообще можно пароль не указывать, достаточно поставить аутентификацию ОС и указать пользователя домена, под которым запущен веб-сервер.

тут решается другая задача, здесь надо чтобы в 1С пользователь авторизовался зависимости от переданных учетных данных, а не всегда одинаково (как запущен вебсервер).

А это я не внимательно прочел)) Тогда я не понял, у тебя что-ли получилось обратиться к веб-сервису под разными пользователями домена?

Только по логину паролю или по доменной авторизации тоже получилось?

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

Ну понятно, шляпа, короче… Такое и средствами веб-сервиса можно забубенить… :)

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Завершается ошибкой проверка web-сервиса из обработки

Модераторы: Дмитрий Юхтимовский, Лысиков Денис

Завершается ошибкой проверка web-сервиса из обработки

При попытке проверить web-сервис из обработки, появляется ошибка:

{ОбщийМодуль.ТехнологическийЖурнал.Модуль(871)}: Значение не является значением объектного типа (SendQuery)

Ошибка в этой строке, опять же, как и с прошлым сервисом:
WS_Определение = Новый WSОпределения(СтруктураПараметров.WSDL_УдаленноеПодключение, СтруктураПараметров.WSDL_Пользователь, СтруктураПараметров.WSDL_Пароль);

Chernov
 
Сообщений: 8
Зарегистрирован: 28 фев 2013, 04:27

Re: Сервис.QueryTJ

Сообщение Лысиков Денис » 28 фев 2013, 07:21

Это значит, что у базы клиенсткой части сервиса нет доступа к интернету. Дайте доступ к интернету и повторно проверьте соединение с веб-сервисом. Если база клиентской части сервиса развернута в клиент-серверном варианте, тогда доступ к интернету должен быть у пользователя от имени которого запущена служба «Агент сервера 1С: Предприятия 8.2»

Лысиков Денис
 
Сообщений: 86
Зарегистрирован: 11 фев 2013, 21:46

Re: Сервис.QueryTJ

Сообщение Chernov » 28 фев 2013, 07:56

Лысиков Денис писал(а):Это значит, что у базы клиенсткой части сервиса нет доступа к интернету. Дайте доступ к интернету и повторно проверьте соединение с веб-сервисом. Если база клиентской части сервиса развернута в клиент-серверном варианте, тогда доступ к интернету должен быть у пользователя от имени которого запущена служба «Агент сервера 1С: Предприятия 8.2»

Спасибо, действительно, дали права доменному пользователю под которым была запущена служба 1С в интернет, и всё заработало.

Chernov
 
Сообщений: 8
Зарегистрирован: 28 фев 2013, 04:27

Re: Сервис.QueryTJ

Сообщение svod » 15 мар 2013, 11:35

Chernov писал(а):

Лысиков Денис писал(а):Это значит, что у базы клиенсткой части сервиса нет доступа к интернету. Дайте доступ к интернету и повторно проверьте соединение с веб-сервисом. Если база клиентской части сервиса развернута в клиент-серверном варианте, тогда доступ к интернету должен быть у пользователя от имени которого запущена служба «Агент сервера 1С: Предприятия 8.2»

Спасибо, действительно, дали права доменному пользователю под которым была запущена служба 1С в интернет, и всё заработало.

Здравствуйте.
А как решён вопрос работы если доступ в интернет происходит через прокси-сервер?

svod
 
Сообщений: 1
Зарегистрирован: 15 мар 2013, 11:31

Re: Сервис.QueryTJ

Сообщение Гилёв Вячеслав » 15 мар 2013, 20:30

Chernov писал(а):А как решён вопрос работы если доступ в интернет происходит через прокси-сервер?

только вчера настраивали на одном из наших проектов, работает также, главное внимательно правила все настроить на прокси, файрволле и т.п.
рекомендуем под учетной записью сервера 1с интерактивно залогиниться и проверить доступ в интернет

Гилёв Вячеслав
 
Сообщений: 2548
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва

Re: Сервис.QueryTJ

Сообщение andrrreasss » 29 мар 2013, 21:21

Зарегился как положено. На клиенте базу прописал. А в сервисе, список баз пустой. Сервис где инфа по сиквел серверу кучу всего показывает. А запросы, нет.

andrrreasss
 
Сообщений: 1
Зарегистрирован: 29 мар 2013, 21:17

Re: Сервис.QueryTJ

Сообщение Гилёв Вячеслав » 30 мар 2013, 00:29

уменьшите первый порог с 10 секунд до 1, через час проверьте

Гилёв Вячеслав
 
Сообщений: 2548
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва

Re: Сервис.QueryTJ

Сообщение trambalda » 30 мар 2013, 09:32

Добрый день, установил первый порог в 1 секунду, информация начала накапливаться.
Но отправить не получается — запускаю вручную задание «Отправка данных запросов», но регистр «Лог отправки данных» пустой, соответственно на сайте тоже пусто. Проверка веб-сервиса проходит успешно.
Как это починить?

trambalda
 
Сообщений: 2
Зарегистрирован: 30 мар 2013, 08:49

Re: Сервис.QueryTJ

Сообщение Гилёв Вячеслав » 30 мар 2013, 12:25

Изображение
Нажмите кнопку обработать и сделайте скриншот результата как в моем примере

Гилёв Вячеслав
 
Сообщений: 2548
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва

Re: Сервис.QueryTJ

Сообщение trambalda » 30 мар 2013, 14:18

Что-то с картинками не удается быстро подружиться. Какой лучше использовать картинкохранитель?

Пишет вот так:
Обработка данных завершена.
Обработано файлов: 3
Обработано количество строк: 95
Обработан общий размер файлов (КБайт): 10,412
Отправлено запросов по веб-сервису: 29

Лог отправки данных вот такой:
30.03.2013 12:40:34
30.03.2013 13:40:36
30.03.2013 14:40:35
30.03.2013 15:06:55
30.03.2013 15:10:05
30.03.2013 15:11:45
Но «количество записей отправлено» везде равно 29.

Информация на сайте только по одной базе, причем по тестовой, а по рабочей, я проверил, логи есть, информация не отсылается.

trambalda
 
Сообщений: 2
Зарегистрирован: 30 мар 2013, 08:49


Re: Сервис.QueryTJ

Сообщение Гилёв Вячеслав » 30 мар 2013, 15:19

trambalda писал(а):Пишет вот так:
Обработка данных завершена.
Обработано файлов: 3
Обработано количество строк: 95
Обработан общий размер файлов (КБайт): 10,412
Отправлено запросов по веб-сервису: 29

Лог отправки данных вот такой:
30.03.2013 12:40:34
30.03.2013 13:40:36
30.03.2013 14:40:35
30.03.2013 15:06:55
30.03.2013 15:10:05
30.03.2013 15:11:45
Но «количество записей отправлено» везде равно 29.

Предварительно вроде все работает. Пройдите по ссылке

https://skynet.gilev.ru/QueryTJ/

, авторизуйтесь и нажмите «обновить» данные. Написал в личку, если получится, готов посмотреть через скайп например или тимвьювер.

Гилёв Вячеслав
 
Сообщений: 2548
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва

Re: Сервис.QueryTJ

Сообщение Nio » 10 апр 2013, 13:39

У меня так же ошибка
{ОбщийМодуль.ТехнологическийЖурнал.Модуль(897)}: Значение не является значением объектного типа (SendQuery)
На сервере 1С попробовал открыть адрес

http://skynet.gilev.ru/QueryTJ/ws/QueryTJ.1cws?wsdl

попросил пользователя и пароль
ввел ws и ws без проблем провалился
Но сервис не работает и все.

Вложения
Снимок.jpg
Снимок.jpg (248.59 KiB) Просмотров: 69159
Nio
 
Сообщений: 8
Зарегистрирован: 10 апр 2013, 13:32

Re: Сервис.QueryTJ

Сообщение simol » 10 апр 2013, 13:57

А точно последняя версия клиента?

simol
 
Сообщений: 101
Зарегистрирован: 18 фев 2013, 11:17

Re: Сервис.QueryTJ

Сообщение Гилёв Вячеслав » 10 апр 2013, 16:30

Nio писал(а):У меня так же ошибка
{ОбщийМодуль.ТехнологическийЖурнал.Модуль(897)}: Значение не является значением объектного типа (SendQuery)
На сервере 1С попробовал открыть адрес

http://skynet.gilev.ru/QueryTJ/ws/QueryTJ.1cws?wsdl

попросил пользователя и пароль
ввел ws и ws без проблем провалился
Но сервис не работает и все.

Наш предыдущий опыт показывает, что дело «не в 1С», а в среде (авторизация через прокси, включен файрволл и т.п.)
Если не разберетесь, напишите в скайп gilev_slava

Гилёв Вячеслав
 
Сообщений: 2548
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва

Re: Сервис.QueryTJ

Сообщение Лысиков Денис » 10 апр 2013, 16:31

Необходимо чтобы wsdl ссылка веб-сервиса, открывалась в браузере под пользователем, от имени которого запущена служба сервера 1с. Очень часто по умолчанию это пользователь USR1CV82. В Вашем случае скорее всего именно у этого пользователя нет доступа к интернету.

Лысиков Денис
 
Сообщений: 86
Зарегистрирован: 11 фев 2013, 21:46

Re: Сервис.QueryTJ

Сообщение Nio » 11 апр 2013, 06:38

Лысиков Денис писал(а):Необходимо чтобы wsdl ссылка веб-сервиса, открывалась в браузере под пользователем, от имени которого запущена служба сервера 1с. Очень часто по умолчанию это пользователь USR1CV82. В Вашем случае скорее всего именно у этого пользователя нет доступа к интернету.

Это я понимаю. Вместе с админом победить не можем.
У нас в инет ходят без прокси через kerio. На нем открыли доступ вообще на машину.

Nio
 
Сообщений: 8
Зарегистрирован: 10 апр 2013, 13:32

Re: Сервис.QueryTJ

Сообщение Nio » 11 апр 2013, 09:16

В журнале регистрации, кстати, нашел вот что

Не удалось вызвать веб-сервис: {ОбщийМодуль.ТехнологическийЖурнал.Модуль(903)}: Ошибка при вызове конструктора (WSОпределения): Аутентификация пользователя не выполнена. : Аутентификация пользователя не выполнена.

Может это поможет в разгадке?
И еще попробовал один метод.
1. Написал обработку в которую добавил только одну строчку

Код: выделить все
ТехнологическийЖурнал.ОбработатьФайлыТехнологическогоЖурнала();

2.Открыл базу и запустил обработку.
Результат то же. Хотя сервис доступен.
Проверял как писал выше.

Nio
 
Сообщений: 8
Зарегистрирован: 10 апр 2013, 13:32

Re: Сервис.QueryTJ

Сообщение Гилёв Вячеслав » 11 апр 2013, 12:18

покажите скриншот с настройками клиента сервиса

Гилёв Вячеслав
 
Сообщений: 2548
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва

Re: Сервис.QueryTJ

Сообщение Nio » 11 апр 2013, 12:22

Вот

Вложения
Снимок.jpg
Снимок.jpg (101.33 KiB) Просмотров: 69131
Nio
 
Сообщений: 8
Зарегистрирован: 10 апр 2013, 13:32

Re: Сервис.QueryTJ

Сообщение Гилёв Вячеслав » 11 апр 2013, 13:02

с виду все нормально, напишите в скайп, надо смотреть

Гилёв Вячеслав
 
Сообщений: 2548
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва

Re: Сервис.QueryTJ

Сообщение Nio » 12 апр 2013, 11:51

После разговора с вами по скайпу все отлично заработало.
Просто само по себе.
Т.к. инетом у нас заведует админ мне пришлось его ловить, зажимать в кабинете и не выпускать.
Проблема была в том что видимо настройки кейрио не приминились на пользователя 1CV8. После того как ночью перезагрузили оба сервера (1С сервера и интернет сервера) видимо кейрио наконец то сообразил что на адрес *gilev.ru/* необходимо выпускать все.
Вот так все заработало.
Спасибо вам большое за терпение и понимание.

Nio
 
Сообщений: 8
Зарегистрирован: 10 апр 2013, 13:32

Re: Сервис.QueryTJ

Сообщение Vladimir » 25 апр 2013, 07:40

Доброго времени суток! С сегодняшнего дня вылазиет ошибка:
{ОбщийМодуль.ТехнологическийЖурнал.Модуль(897)}: Ошибка при вызове метода контекста (SendQuery)
Прокси.SendQuery(ТаблицаЗапросовСтрокой,ИденификаторБазы);
по причине:
Ошибка вызова операции сервиса: {http://www.querytj.org/webservice}:QueryTJ:SendQuery()
по причине:
Неизвестная ошибка. Ошибка работы с Интернет: Couldn’t connect to server
по причине:
Ошибка работы с Интернет: Couldn’t connect to server

В браузере ссылка не открывается.

Vladimir
 
Сообщений: 13
Зарегистрирован: 05 апр 2013, 09:22

Re: Сервис.QueryTJ

Сообщение Гилёв Вячеслав » 26 апр 2013, 06:22

Разобрались или проблема осталась?

Гилёв Вячеслав
 
Сообщений: 2548
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва

Re: Сервис.QueryTJ

Сообщение Vladimir » 26 апр 2013, 07:12

Увы нет. В данный момент, когда захожу на

https://skynet.gilev.ru/QueryTJ

и выбираю базу вылетает ошибка
Соединение с сервером баз данных разорвано администратором
Microsoft SQL Server Native Client 10.0: Communication link failure
HRESULT=80004005, HRESULT=80004005,

Vladimir
 
Сообщений: 13
Зарегистрирован: 05 апр 2013, 09:22

Re: Сервис.QueryTJ

Сообщение Vladimir » 26 апр 2013, 08:22

Вопрос снят. Временное помешательство интернета. Всё само собой починилось

Vladimir
 
Сообщений: 13
Зарегистрирован: 05 апр 2013, 09:22

Re: Сервис.QueryTJ

Сообщение syncmas » 19 май 2013, 16:51

Добрый день!
При включении технологического журнала стала выдаваться ошибка «Разрешение SHOWPLAN» запрещено в базе данных tempdb». Как это победить?

Вложения
showplan.jpg
showplan.jpg (75.06 KiB) Просмотров: 68702
syncmas
 
Сообщений: 8
Зарегистрирован: 19 май 2013, 16:45


Re: Сервис.QueryTJ

Сообщение syncmas » 20 май 2013, 14:59

Дмитрий Юхтимовский писал(а):http://www.gilev.ru/deniedtempdb/

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

syncmas
 
Сообщений: 8
Зарегистрирован: 19 май 2013, 16:45

Re: Сервис.QueryTJ

Сообщение Дмитрий Юхтимовский » 22 май 2013, 08:33

база tempdb пересоздаётся при каждом рестарте службы MS SQL, можете прописать скрипт в автозагрузку.

Дмитрий Юхтимовский
 
Сообщений: 732
Зарегистрирован: 11 фев 2013, 19:28
Откуда: gilev.ru

Re: Сервис.QueryTJ

Сообщение khan » 19 июн 2013, 21:26

Добрый день,
Не могу подключиться к вебсервису :
{ОбщийМодуль.ТехнологическийЖурнал.Модуль(897)}: Ошибка при вызове метода контекста (SendQuery): Ошибка вызова операции сервиса: {http://www.querytj.org/webservice}:QueryTJ:SendQuery(): Ошибка SOAP сервера: Нарушение прав доступа к операции Web-сервиса: {http://www.querytj.org/webservice}:QueryTJ:SendQuery()

khan
 
Сообщений: 1
Зарегистрирован: 19 июн 2013, 21:08

Re: Сервис.QueryTJ

Сообщение Лысиков Денис » 24 июн 2013, 08:16

Проверьте что в настройках пользователь и пароль к веб-сервису стоит «ws», как это указано в инструкции к сервису.

Лысиков Денис
 
Сообщений: 86
Зарегистрирован: 11 фев 2013, 21:46


Re: Сервис.QueryTJ

Сообщение Гилёв Вячеслав » 07 авг 2013, 23:04

Вы можете развернуть клиентскую часть в 8.2?
Как ни странно, мы разрабатывали клиентскую часть под текущие промышленные базы. Если под 8.2 не заработает, тогда будут нужны файлы собранных логов ТЖ для воспроизведения проблемы на нашем сервере.

Гилёв Вячеслав
 
Сообщений: 2548
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва


Re: Сервис.QueryTJ

Сообщение artur » 08 авг 2013, 10:53

создам новый конфигЛога с более менее минимальными параметрами
соберу снова
разверну на 82

протестю, отправлю.

//Но пока с 82 таже ошибка получилась
посмотрел по отладчику
файлы читаются, строка на отправку формируется

исключение возникает в процедуре
в методе SendQuery()

Код: выделить все
Процедура ОтправитьТаблицуОшибокПоВебСервису(Прокси,Сервер1с,ТаблицаОшибок,ИденификаторБазы)

      ТаблицаОшибокСтрокой = ЗначениеВСтрокуВнутр(Новый ХранилищеЗначения(ТаблицаОшибок,Новый СжатиеДанных(9)));

      Прокси.SendQuery(ТаблицаОшибокСтрокой,ИденификаторБазы,Сервер1с.Наименование);

   КонецПроцедуры

но вопрос для которого собирался ТЖ самоустранился)
у нас сервер 1с на 8.3, и наблюдалось что кеш сервера рос в геометрической прогрессии и мог занимать почти все свободное пространство (>20 ГБ), заполняя свою папку кеша файлами по 65МБ

Последней ночью что то случилось, изучаем виндовый журнал. но служба перезапускалась и после этого кеш не растет(присутствуют 2-3 файла и все).
Хотя, до этого, мы тоже не раз рестартили службу… пока одна мистика на уме.

artur
 
Сообщений: 2
Зарегистрирован: 06 авг 2013, 14:55

Re: Сервис.QueryTJ

Сообщение Biryuk Andrey » 14 авг 2013, 18:12

Пытаюсь проанализировать данные по долгим запросам за период и похоже при каких то условиях, данные берутся из разных мест — т.е. если строю например за неделю (включая сегодня), то данных за сегодня нет, если только за сегодня (или вчера и сегодня) — есть. Я так понимаю данные разделяются по какому-то принципу на архивные и текущие?

Вложения
ДанныеПоПериодам.png
ДанныеПоПериодам.png (101.66 KiB) Просмотров: 35242
Biryuk Andrey
 
Сообщений: 28
Зарегистрирован: 01 авг 2013, 20:15

Re: Сервис.QueryTJ

Сообщение Гилёв Вячеслав » 15 авг 2013, 12:42

в оперативной таблице последние два дня,
наверное не успели смигрировать

Гилёв Вячеслав
 
Сообщений: 2548
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва

Re: Сервис.QueryTJ

Сообщение Biryuk Andrey » 15 авг 2013, 20:50

А можете рассказать подробнее про длительность порогов (зачем 3 штуки)?

Biryuk Andrey
 
Сообщений: 28
Зарегистрирован: 01 авг 2013, 20:15

Re: Сервис.QueryTJ

Сообщение Гилёв Вячеслав » 19 авг 2013, 15:00

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

Гилёв Вячеслав
 
Сообщений: 2548
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва

Re: Сервис.QueryTJ

Сообщение amiralnar » 18 сен 2013, 20:22

Здравствуйте.
Я правильно понял, что сервис обрабатывает только успешно выполненные запросы?
Если зависает закрытие месяца намертво, то невозможно получить данные по запросу?
Что делать в таком случае?

amiralnar
 
Сообщений: 4
Зарегистрирован: 18 сен 2013, 20:20

Re: Сервис.QueryTJ

Сообщение Гилёв Вячеслав » 19 сен 2013, 00:20

Очень мало информации, чтобы дать однозначный ответ.
Закрытие месяца <> долгий запрос.
Вот если вы запустили замер в конфигураторе и выяснили что основное время уходит на выполнение одного конкретного запроса, тогда выложите файл с замером.
Покажите текст запроса 1с, который Вам кажется подозрительным сюда в тему, вместо попробуем подумать, что можно сделать. Еще лучше, если заведете отдельную тему.

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

Гилёв Вячеслав
 
Сообщений: 2548
Зарегистрирован: 11 фев 2013, 15:40
Откуда: Россия, Москва


Вернуться в QueryTJ — Анализ долгих запросов

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Содержание

  1. Коды ошибок аутентификации и авторизации Azure AD
  2. Просмотр сведений о текущем коде ошибки
  3. Обработка кодов ошибок в приложении
  4. Аутентификация пользователя не выполнена wsопределения
  5. Ошибка при вызове конструктора (WSОпределения) Модуль 198 и 504
  6. Ошибка при вызове конструктора (WSОпределения) Модуль 198 и 504
  7. Причины ошибок с модулем 198-504
  8. Как решить проблему
  9. HTTP Basic Authentication
  10. HTTP Digest Authentication
  11. Forms Authentication
  12. Token Authentication
  13. OAuth2 & Open ID Connect
  14. Разбираемся детально ху из ху
  15. Сервис выдачи токенов
  16. Клиент
  17. Пользователь
  18. Область (scope)
  19. Запрос на аутентификацию
  20. Токен личности
  21. Токен доступа
  22. Токен обновления
  23. Формат
  24. Основные поля

Коды ошибок аутентификации и авторизации Azure AD

Вам нужна информация о кодах ошибок AADSTS, которые возвращаются службой маркеров безопасности (STS) Azure Active Directory (Azure AD)? В этом документе приводятся описания ошибок AADSTS, методы их исправления и некоторые рекомендации по обходным путям.

Эта информация является предварительной и подлежит изменению. У вас есть вопрос или не можете найти нужную информацию? Создайте запрос в GitHub или изучите статью Возможности получения поддержки и справки для разработчиков, чтобы узнать о других способах получения поддержки и справки.

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

Просмотр сведений о текущем коде ошибки

Коды ошибок и сообщения могут изменяться. Для получения самых актуальных сведений ознакомьтесь со страницей https://login.microsoftonline.com/error, чтобы найти описания ошибок, исправления и некоторые возможные обходные пути AADSTS.

Например, если получен код ошибки «AADSTS50058», выполните поиск по запросу «50058» в https://login.microsoftonline.com/error. Можно также напрямую связать с определенной ошибкой, добавив номер кода ошибки к URL-адресу: https://login.microsoftonline.com/error?code=50058.

Обработка кодов ошибок в приложении

Спецификация OAuth 2.0 содержит рекомендации по обработке ошибок во время проверки подлинности с помощью части error ответа на ошибку.

Ниже приведен пример ответа на ошибку:

Параметр Описание
error Строка кода ошибки, которую нужно использовать для классификации типов возникающих ошибок и реагирования на них.
error_description Конкретное сообщение об ошибке, с помощью которого разработчик может определить причину возникновения ошибки проверки подлинности. Никогда не используйте это поле для реагирования на ошибку в коде.
error_codes Список кодов ошибок, характерных для службы маркеров безопасности, которые могут помочь при диагностике.
timestamp Время возникновения ошибки.
trace_id Уникальный идентификатор для запроса, который может помочь при диагностике.
correlation_id Уникальный идентификатор для запроса, который может помочь при диагностике нескольких компонентов.
error_uri Ссылка на страницу поиска ошибок с дополнительными сведениями об ошибке. Это предназначено только для разработчиков, не предоставляйте его пользователям. Предоставляется только в том случае, если в системе поиска ошибок содержатся дополнительные сведения об ошибке — не вся ошибка содержит дополнительные сведения.

Поле error имеет несколько возможных значений. Ознакомьтесь со ссылками на документацию по протоколам и спецификациями OAuth 2.0, чтобы узнать больше о конкретных ошибках (например, authorization_pending в потоке кода устройства) и о том, как реагировать на них. Некоторые из наиболее распространенных перечислены здесь:

Источник

Аутентификация пользователя не выполнена wsопределения

An error occurred processing this request. «

Способ исправления: Для исправления ошибки надо в общем модуле ОбменСообщениямиВнутренний в процедурах:
ВыполнитьПодключениеКонечнойТочкиНаСторонеПолучателя,
ВыполнитьПодключениеКонечнойТочкиНаСторонеОтправителя,
УстановитьВедущуюКонечнуюТочкуНаСторонеОтправителя,
ВыполнитьОбновлениеНастроекПодключенияКонечнойТочки,
а также в модуле веб-сервиса MessageExchange и MessageExchange_2_0_1_6
после строки
СтруктураЗаписи.Вставить(«WSИмяПользователя», НастройкиПодключенияОтправителя.WSИмяПользователя);
вставить строку кода:
СтруктураЗаписи.Вставить(«WSЗапомнитьПароль», Истина);
После этого надо зайти в регистр НастройкиТранспортаОбмена в менеджере сервиса и задать пароль для подключения к конечной точке, признак «Запомнить пароль» надо установить. Исправлено в релизе: 2.1.2 Код ошибки: 20007374 Дата публикации: 21 августа 2012 г. Описание: В обработке «Групповое изменение объектов» нельзя установить дробное числовое значение реквизита. Способ исправления: В обработке ГрупповоеИзменениеОбъектов в табличной части Операции у реквизита Значение в свойстве Тип для типа данных «Число» изменить длину и точность, например, «15, 4». Исправлено в релизе: 2.1.2 Код ошибки: 20007286 Дата публикации: 17 августа 2012 г. Описание: Если для синхронизации данных в модели сервиса используется протокол https (защищенное соединение) и платформа версии 8.2.16 или выше, то может возникать ошибка вида:
«Ошибка разбора XML: – [6,8]
Фатальная ошибка:
Opening and ending tag mismatch: hr line 0 and body» Способ исправления: Для исправления ошибки следует заменить функцию
ОбщийМодуль.ПолучениеФайловИзИнтернетаКлиентСервер.ПолучитьФайлИзИнтернет
на такую:
Функция ПолучитьФайлИзИнтернет(знач URL, знач НастройкаСохранения, знач НастройкаСоединения = Неопределено,
знач НастройкиПрокси = Неопределено)

// Объявление переменных перед первым использованием в качестве
// параметра метода Свойство, при анализе параметров получения файлов
// из ПараметрыПолучения. Содержат значения переданных параметров получения файла
Перем ИмяСервера, ИмяПользователя, Пароль, Порт,
ЗащищенноеСоединение,ПассивноеСоединение,
ПутьКФайлуНаСервере, Протокол;

ИмяСервера = URLРазделенный.ИмяСервера;
ПутьКФайлуНаСервере = URLРазделенный.ПутьКФайлуНаСервере;
Протокол = URLРазделенный.Протокол;
ИмяПользователя = НастройкаСоединения.Получить(«Пользователь»);
ПарольПользователя = НастройкаСоединения.Получить(«Пароль»);
Порт = НастройкаСоединения.Получить(«Порт»);
Таймаут = НастройкаСоединения.Получить(«Таймаут»);
ПассивноеСоединение = НастройкаСоединения.Получить(«ПассивноеСоединение»);

ЗащищенноеСоединение = НастройкаСоединения.Получить(«ЗащищенноеСоединение»);
Если Протокол = «https» Тогда
ЗащищенноеСоединение = Истина;
КонецЕсли;

Если Порт = Неопределено Тогда
ПолнаяСтруктураURL = СтруктураURI(URL);

Если НЕ ПустаяСтрока(ПолнаяСтруктураURL.Порт) Тогда
ИмяСервера = ПолнаяСтруктураURL.Хост;
Порт = ПолнаяСтруктураURL.Порт;
КонецЕсли;
КонецЕсли;

НастройкиПрокси = ?(НастройкиПрокси = Неопределено, ПолучитьПустыеНастройкиПроксиСервера(), НастройкиПрокси);
Прокси = СформироватьПрокси(НастройкиПрокси, Протокол);

ПараметрыСоединения = Новый Массив;
ПараметрыСоединения.Добавить(ИмяСервера);
ПараметрыСоединения.Добавить(Порт);
ПараметрыСоединения.Добавить(ИмяПользователя);
ПараметрыСоединения.Добавить(ПарольПользователя);
ПараметрыСоединения.Добавить(Прокси);

Если Протокол = «ftp» Тогда

ПараметрыСоединения.Добавить(ПассивноеСоединение);
Если ОбщегоНазначения.ПлатформаПоддерживаетТаймаутыСети() Тогда
ПараметрыСоединения.Добавить(Таймаут);
КонецЕсли;

Попытка
Соединение = Новый(Тип(«FTPСоединение»), ПараметрыСоединения);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
СообщениеОбОшибке = НСтр(«ru = ‘Ошибка при создании FTP-соединения с сервером %1:’») + Символы.ПС + «%2»;
ПолучениеФайловИзИнтернета.ЗаписатьОшибкуВЖурналРегистрации(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, ИмяСервера,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)));
СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, ИмяСервера,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
Возврат СформироватьРезультат(Ложь, СообщениеОбОшибке);
КонецПопытки;
Иначе

Если ОбщегоНазначения.ПлатформаПоддерживаетТаймаутыСети() Тогда
ПараметрыСоединения.Добавить(Таймаут);

Если ЗащищенноеСоединение = Истина Тогда
ИмяТип = «ЗащищенноеСоединениеOpenSSL»;
ЗащищенноеСоединение = Новый(Тип(ИмяТип));
Иначе
ЗащищенноеСоединение = Неопределено;
КонецЕсли;
КонецЕсли;
ПараметрыСоединения.Добавить(ЗащищенноеСоединение);

Попытка
Соединение = Новый(Тип(«HTTPСоединение»), ПараметрыСоединения);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
СообщениеОбОшибке = НСтр(«ru = ‘Ошибка при создании HTTP-соединения с сервером %1:’») + Символы.ПС + «%2»;
ПолучениеФайловИзИнтернета.ЗаписатьОшибкуВЖурналРегистрации(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, ИмяСервера,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)));
СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, ИмяСервера,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
Возврат СформироватьРезультат(Ложь, СообщениеОбОшибке);
КонецПопытки;
КонецЕсли;

Если НастройкаСохранения[«Путь»] <> Неопределено Тогда
ПутьДляСохранения = НастройкаСохранения[«Путь»];
Иначе
#Если НЕ ВебКлиент Тогда
ПутьДляСохранения = ПолучитьИмяВременногоФайла();
#КонецЕсли
КонецЕсли;

Попытка
Соединение.Получить(ПутьКФайлуНаСервере, ПутьДляСохранения);
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
СообщениеОбОшибке = НСтр(«ru = ‘Ошибка при получении файла с сервера %1:’») + Символы.ПС + «%2»;
ПолучениеФайловИзИнтернета.ЗаписатьОшибкуВЖурналРегистрации(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, ИмяСервера,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)));
СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, ИмяСервера,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
Возврат СформироватьРезультат(Ложь, СообщениеОбОшибке);
КонецПопытки;

// Если сохраняем файл в соответствии с настройкой
Если НастройкаСохранения[«МестоХранения»] = «ВременноеХранилище» Тогда
КлючУникальности = Новый УникальныйИдентификатор;
Адрес = ПоместитьВоВременноеХранилище (ПутьДляСохранения, КлючУникальности);
Возврат СформироватьРезультат(Истина, Адрес);
ИначеЕсли НастройкаСохранения[«МестоХранения»] = «Клиент»
ИЛИ НастройкаСохранения[«МестоХранения»] = «Сервер» Тогда
Возврат СформироватьРезультат(Истина, ПутьДляСохранения);
Иначе
Возврат Неопределено;
КонецЕсли;

Исправлено в релизе: 2.1.2 Код ошибки: 20007404 Дата публикации: 17 августа 2012 г. Описание: При выгрузке области данных в файл не указываются типы ссылок на справочник ИдентификаторыОбъектовМетаданных, в результате не срабатывает подмена ссылок при загрузке и все загруженные ссылки на этот справочник оказываются «битыми» (отображаются в виде «Объект не найден»). Исправлено в релизе: 2.1.2 Код ошибки: 10110815 Дата публикации: 17 августа 2012 г. Описание: При загрузке области данных из файла не выполняется подмена ссылок на справочник ИдентификаторыОбъектовМетаданных, в результате все загруженные ссылки на этот справочник оказываются «битыми» (отображаются в виде «Объект не найден»). Исправлено в релизе: 2.1.2 Код ошибки: 20007424 Дата публикации: 17 августа 2012 г. Описание: Нельзя настроить обмен данными из локального рабочего места с приложением в Интернете.
Возникает ошибка вида:
» : Регламентное задание не найдено.
Возможно, оно удалено другим пользователем.». Способ исправления: В общем модуле АвтономнаяРаботаСлужебный заменить процедуру ОтключитьАвтоматическуюСинхронизациюДанныхСПриложениемВИнтернете
на такую:
Процедура ОтключитьАвтоматическуюСинхронизациюДанныхСПриложениемВИнтернете() Экспорт

Если Не ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда

РегламентныеЗаданияСервер.УстановитьИспользованиеРегламентногоЗадания(
Метаданные.РегламентныеЗадания.СинхронизацияДанныхСПриложениемВИнтернете, Ложь
);

Планируется исправить в релизе: 2.1.2 Код ошибки: 10111971 Дата публикации: 14 августа 2012 г. Описание: Невозможно пометить на удаление завершенный бизнес-процесс из формы бизнес-процесса. Способ исправления: В модуле формы бизнес-процесса Задание.ФормаБизнесПроцесса в обработчике ПриСозданииНаСервере
заменить строку:
ТолькоПросмотр = Объект.Завершен;
на
Если Объект.Завершен Тогда
Для каждого Элемент Из Элементы Цикл
Если ТипЗнч(Элемент) <> Тип(«ПолеФормы») И ТипЗнч(Элемент) <> Тип(«ГруппаФормы») Тогда
Продолжить;
КонецЕсли;
Элемент.ТолькоПросмотр = Истина;
КонецЦикла;
КонецЕсли; Исправлено в релизе: 2.1.2 Код ошибки: 20007335 Дата публикации: 14 августа 2012 г. Описание: После настройки обмена через веб-сервис, данные в информационных базах, между которыми настраивался обмен, оставались не синхронизированными. Исправлено в релизе: 2.1.2 Код ошибки: 10088978 Дата публикации: 10 августа 2012 г. Описание: Технология обмена по правилам обмена БСП не поддерживает обмен движениями документов. Способ обхода: Если необходимо синхронизировать движения документов, то для этого в состав плана обмена следует включать регистры, по которым документ выполняет движения и создавать ПВД для наборов записей этих регистров.
По аналогии, как в технологии обмена РИБ. Код ошибки: 20006958 Дата публикации: 10 августа 2012 г. Описание: В некоторых случаях, при запуске в толстом клиенте, управляемое приложение, возникает ошибка:
: Переменная не определена (ВариантыОтчетов)
ОтчетИнформация = >ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(КлючОтчета);
: Переменная не определена (ВариантыОтчетов)
ОтчетИнформация = >ВариантыОтчетов.СформироватьИнформацВиюОбОтчетеПоПолномуИмени(КлючОтчета);
: Переменная не определена (ВариантыОтчетов)
ОтчетИнформация = >ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(КлючОтчета);
: Переменная не определена (ВариантыОтчетов)
ОтчетИнформация = >ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(КлючОтчета);
: Переменная не определена (ВариантыОтчетов)
ОтчетИнформация = >ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(КлючОтчета);
: Переменная не определена (ВариантыОтчетов)
ОтчетИнформация = >ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(КлючОтчета);
: Переменная не определена (Пользователи)
ТекущийПользователь = >Пользователи.ТекущийПользователь(); Способ исправления: Внести изменения в конфигурацию:
1) общим модулям ВариантыОтчетов и Пользователи установить признак «Вызов сервера»
2) очистить свойство конфигурации «Хранилище вариантов отчетов» и задать его во всех отчетах конфигурации Исправлено в релизе: 2.1.2 Код ошибки: 10111163 Дата публикации: 1 августа 2012 г. Описание: При попытке перейти к присоединенным файлам возникает ошибка «Недостаточно прав для просмотра». Способ исправления: Включить в роль «Базовые права» право просмотра справочника «Тома хранения файлов». Исправлено в релизе: 2.1.2 Код ошибки: 20005632 Дата публикации: 1 августа 2012 г. Описание: При печати с использованием макета MS Word из макета не копируются изменения стандартных стилей. Способ воспроизведения: Изменить один из используемых стандартных стилей в макете, например шрифт по умолчанию. Способ обхода: После получения печатной формы
ПечатнаяФорма = УправлениеПечатьюКлиент.ИнициализироватьПечатнуюФорму(.

скопировать стили из макета:
ПечатнаяФорма.COMСоединение.ActiveDocument.CopyStylesFromTemplate(ПутьКФайлуМакета);

При этом, файл макета не должен быть открыт (например, можно сохранить макет в отдельный временный файл).

Исправлено в релизе: 2.1.2 Код ошибки: 10111160 Дата публикации: 1 августа 2012 г. Описание: При сохранении печатной формы документа не использующего присоединенные файлы возникает ошибка:
: Поле объекта не обнаружено (ПутевкаПрисоединенныеФайлы)
Возврат ПравоДоступа(«Добавление», Метаданные.Справочники[ИмяХранилища]) Способ исправления: В общем модуле ПрисоединенныеФайлы в функции КОбъектуМожноПрисоединятьФайлы поменять строки местами.
Заменить строки:
Возврат ПравоДоступа(«Добавление», Метаданные.Справочники[ИмяХранилища])
И Метаданные.Справочники.Найти(ИмяХранилища) <> Неопределено
На строки:
Возврат Метаданные.Справочники.Найти(ИмяХранилища) <> Неопределено
И ПравоДоступа(«Добавление», Метаданные.Справочники[ИмяХранилища]) Исправлено в релизе: 2.1.2 Код ошибки: 20006637 Дата публикации: 27 июля 2012 г. Описание: Ошибка при открытии объекта, подключенного к подсистеме «Контактная информация». Способ исправления: В общем модуле УправлениеКонтактнойИнформациейКлассификаторы исправить строку
АдресныйКлассификатор.ПризнакАктуальности КАК АльтернативныеНазвания
на
АдресныйКлассификатор.ПризнакАктуальности КАК ПризнакАктуальности Исправлено в релизе: 2.1.2 Код ошибки: 20006712 Дата публикации: 27 июля 2012 г. Описание: При включении отладки загрузки некорректно получается имя внешней обработки отладки загрузки. Способ воспроизведения: В настройках обмена включить режим отладки загрузки и подключить обработку для отладки загрузки. Способ исправления: Модуль ОбменДаннымиСервер
Функция ПолучитьОбработкуОбменаДаннымиДляЗагрузки(СтруктураНастроекОбмена)
заменить строку
ОбработкаОбменаДанными.ИмяФайлаВнешнейОбработкиОтладкиВыгрузки = СтруктураНастроекОбмена.ИмяФайлаОбработкиДляОтладкиЗагрузки;
на строку
ОбработкаОбменаДанными.ИмяФайлаВнешнейОбработкиОтладкиЗагрузки = СтруктураНастроекОбмена.ИмяФайлаОбработкиДляОтладкиЗагрузки; Способ обхода: Использовать обработку в составе конфигурации для выполнения кода обработчиков загрузки. Исправлено в релизе: 2.1.1.13 Код ошибки: 20006771 Дата публикации: 27 июля 2012 г. Описание: Невозможно выполнить обмен в сервисе при условии, что одна из конфигураций на базе БСП 2.0, а вторая – на базе БСП 2.1.1.12 Способ исправления: 1) Установить новую версию конфигурации «Конвертация данных» 2.1.6.2.
2) В БСП 2.1 в обработке КонвертацияОбъектовИнформационныхБаз внести следующие изменения:
Заменить функцию РежимСовместимостиСБСП20 на
Функция РежимСовместимостиСБСП20()

Если ПолеРежимСовместимостиСБСП20 = Неопределено Тогда

ПолеРежимСовместимостиСБСП20 = (Конвертация.РежимСовместимости = «»
Или Конвертация.РежимСовместимости = «РежимСовместимостиСБСП20»)
И Не ЭтоМодельСервиса;

КонецФункции
В процедуре ЗагрузитьПравилаОбмена
после строки Конвертация.Вставить(«ВерсияФормата», Значение);
вставить следующие строки:
РежимСовместимости = ПравилаОбмена.ПолучитьАтрибут («РежимСовместимости»);
Если РежимСовместимости <> Неопределено Тогда
Конвертация.Вставить(«РежимСовместимости», РежимСовместимости)
КонецЕсли;

Исправлено в релизе: 2.1.2 Код ошибки: 20006651 Дата публикации: 27 июля 2012 г. Описание: Обновление информационной базы в модели сервиса завершается с ошибкой:
: Ошибка при вызове метода контекста (Установить)
Константы.ДатаОбновленияПовторноИспользуемыхЗначенийМРО.Установить(ТекущаяДата());
по причине:
Нельзя использовать таблицу без указания всех разделителей с независимым использованием разделяемых данных
объект: ‘Константа.ДатаОбновленияПовторноИспользуемыхЗначенийМРО’ Способ обхода: В общем модуле ОбменДаннымиСервер заменить процедуру УстановитьДатуОбновленияПовторноИспользуемыхЗначенийМРО на следующую:
Процедура УстановитьДатуОбновленияПовторноИспользуемыхЗначенийМРО() Экспорт

Если ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда

УстановитьПривилегированныйРежим(Истина);
// записываем дату и время компьютера сервера – ТекущаяДата()
// метод ТекущаяДатаСеанса() использовать нельзя.
// Текущая дата сервера в данном случае используется в качестве ключа уникальности кэша механизма регистрации объектов.
Константы.ДатаОбновленияПовторноИспользуемыхЗначенийМРО.Установить(ТекущаяДата());

Ошибка при вызове конструктора (WSОпределения) Модуль 198 и 504

Ошибка при вызове конструктора (WSОпределения) Модуль 198 и 504

Добрый день! Уважаемые читатели и гости популярного компьютерного блога pyatilistnik.org. В прошлый раз мы с вами решили ошибку » db query error please try later», и восстановили работу сайта на платформе 1С Битрикс. Сегодня я хочу поделиться небольшой заметкой, как выйти из ситуации, когда не работает кнопка «Заполнить по ИНН» в Справочнике Контрагенты при создании нового. Выдается ошибка «ОбщийМодуль.ОбщегоНазначенияПовтИсп.Модуль(198): Ошибка при вызове конструктора (WSОпределения) WSОпределения = Новый(Тип(«WSОпределения»). Давайте разбираться в чем собственно дело.

Причины ошибок с модулем 198-504

Вся проблема связана с неправильным и устаревшим сертификатом, это бывает если вы давно не обновляли свою версию 1С, а в этот момент как раз истек срок сертификата, который участвует в подключении к внешним сервисам, например, npchk.nalog.ru или api.orgregister.1c.ru.

Вот так вот выглядит более полный текст ошибки:

WSОпределения = Новый(Тип(«WSОпределения»), Параметры);

При вызове веб-сервиса произошла ошибка. При создании описания сервиса произошла ошибка. URL сервиса: https://api.orgregister.1c.ru/orgregister/v7?wsdl

Ошибка работы с Интернет: Удаленный узел не прошел проверку

10060 – Ошибка соединения с сервером

HOST – npchk.nalog.ru[81.177.31.8]; PORT – 80
Connection timed outTraffic Inspector HTTP/FTP/Proxy server (3.0.2.912)

по причине:
Ошибка работы с Интернет: произошел таймаут при ожидании ответа шлюзу (504)

Как решить проблему

  • Самым быстрым методом? будет замена сертификата cacert.pem, который располагается в папке с вашим клиентом. Скачать cacert.pem можно о официального сайта по ссылке:

В итоге у вас будет архив с сертификатом cacert.pem, распакуйте его. Далее, откройте вашего клиента, где вы получаете ошибку при вызове конструктора WSОпределения. И перейдите по пути:

Если вы теряетесь в своих версиях, то попробуйте произвести поиск по cacert.pem в папке C:Program Files (x86) и посмотрите, где у вас нужно подменить, этот файл. Меняете его на свежий и радуетесь жизни.

  • Второй метод, заключается в использовании обработки в 1С. Скачайте файл обработка.epf

ОБЯЗАТЕЛЬНО запустите его от имени администратора, иначе можете получить ошибку:


Автор: Вячеслав Михайлов, Solutions Architect

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

Мы разберемся с процессом аутентификации пользователя, работой технологии единого входа (Single sign-on/SSO), дадим общее представлении о технологии OAuth2 и принципах ее работы, не углубляясь в особенности конкретной технической реализации. В следующей статье в качестве примера удачной реализации мы рассмотрим библиотеку Thinktecture Identity Server v3, подробнее остановимся на ее функциональных возможностях, поговорим, как собрать минимальный набор компонент, необходимый для работы в микросервисной архитектуре и достойный использования в боевой системе. В третьей части мы покажем, как расширять эту библиотеку, подстраиваясь под нужды вашей системы, а завершит цикл статей разбор различных сценариев, встречавшихся в жизни многих разработчиков с рекомендациями для каждого случая.

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

Идентификация — процесс определения, что за человек перед нами. Аутентификация — процесс подтверждения, что этот человек именно тот, за кого себя выдает. Авторизация — процесс принятия решения о том, что именно этой аутентифицированной персоне разрешается делать. То есть, это три разных, последовательных и взаимно не заменяемых понятия. Идентификацию часто подразумевают в составе аутентификации. Самое главное — четко различать аутентификацию и авторизацию.

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

При использовании HTTP-протокола простейший способ аутентификации — Basic access authentication. В принципе этот протокол устарел и уже редко используется в интернете, особенно в незащищенных соединениях, но еще сохраняется во внутрикорпоративных системах, просто потому что некоторые из них созданы достаточно давно. Стоит разобраться, как он работает.

HTTP Basic Authentication

Первым, что при обращении к защищенному ресурсу сервер выдаст пользователю, не имеющему доступа, будет ошибка 401 Unauthorized. При этом ответ также содержит информацию о типе аутентификации (в нашем случае – Basic), который он может принимать, и контекст, в рамках которого эта аутентификация действует (Realm). Пользователь вводит логин и пароль, они упаковываются в Base64 и отправляются на сервер для проверки. Здесь существуют различные опасности. Самая распространенная — угроза man-in-the-middle attack, или атаки посредника, в ходе которой при использовании незащищенного соединения учетные данные могут перехватить злоумышленники в момент передачи от клиента к серверу или обратно.

HTTP Digest Authentication

Следующим этапом развития технологии стала чуть более сложная система HTTP digest authentication, которая исключает передачу учетных данных в открытом виде — здесь для проверки используется MD5-хеш с некоторыми примесями, что позволяет избежать подбора логина и пароля. Конечно, этот алгоритм выглядит более надежным, но и он подвержен целому ряду не самых сложных атак. Например, вот тут можно почитать об атаках более подробно.

Forms Authentication

Позднее появился процесс Forms authentication, при котором аутентификация происходит на более высоком уровне модели абстракции. HTTP-сервер при этом не сообщает об ошибке доступа, а просто перенаправляет неаутентифицированного пользователя на другую страницу. Обычно на этой странице отображаются поля для ввода логина и пароля, после заполнения которых формируется POST-запрос с данными и через защищенный канал направляется на сервер. Серверная сторона в свою очередь возвращает пользователю токен или идентификатор сессии, который сохраняется в Cookies и в дальнейшем используется для доступа к защищенному ресурсу.

Token Authentication

Следующее поколение способов аутентификации представляет Token Based Authentication, который обычно применяется при построении систем Single sign-on (SSO). При его использовании запрашиваемый сервис делегирует функцию проверки достоверности сведений о пользователе другому сервису. Т. е. провайдер услуг доверяет выдачу необходимых для доступа токенов собственно токен-провайдеру (Identity provider). Это то, что мы видим, например, входя в приложения через аккаунты в социальных сетях. Вне IT самой простой аналогией этого процесса можно назвать использование общегражданского паспорта. Официальный документ как раз является выданным вам токеном — все государственные службы по умолчанию доверяет отделу полиции, который его вручил, и считает паспорт достаточным для вашей аутентификации на протяжении всего срока действии при сохранении его целостности.

На схеме хорошо видно, как и в какой последовательности приложения обмениваются информацией при использовании аутентификацией по токенам.

На следующей схеме дополнительно отражены те этапы взаимодействия, в которых пользователь принимает непосредственное участие. Этот момент и является недостатком подобной схемы — нам всегда нужен пользователь, чтобы получить доступ к ресурсу.

OAuth2 & Open ID Connect

Дальнейшее усовершенствование процесса понадобилось ввиду того, что токен-аутентификация требует присутствия пользователя в момент получения доступа к защищенному ресурсу. Потому что Identity provider при передаче ему управления будет с пользователем взаимодействовать, запрашивая, например, логин и пароль.

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

В 2006 году в ходе работы над реализацией протокола Open ID для Twitter обнаружилась потребность в новом открытом протоколе авторизации. В 2007 инженеры Google и AOL начали совместную работу над ним, а в 2009 Twitter предложил своим пользователям решение, делегировавшее сторонним сервисам доступ к аккаунтам и основанное на протоколе OAuth. Три года спустя была опубликована новая версия — OAuth 2, упростившая разработку клиентских приложений и получившая целый ряд новых возможностей, среди которых оказалось и обновление токена без участия пользователя. Многие сервисы начали использовать этот протокол еще до его официального утверждения.

Разбираемся детально ху из ху

В данный момент на слуху следующие протоколы:

  1. OpenID — для проверки учетных данных пользователя (identification & authentication).
  2. OAuth — про то, чтобы получать доступ к чему-то.
  3. OpenID Connect — и про и то, и про другое одновременно.

Все три протокола позволяют пользователю не разглашать свои секретные логин и пароль недоверенным приложениям. OpenID & OAuth разрабатывались параллельно вплоть до 2014 года и объединились в итоге в OpenID connect.

OpenID 1.0 (2006) & OpenID 2.0 (2007) позволяли приложению(арб) запрашивать у доверенного сервера (authority) проверку пользователя(user). Отличия между версиями для нас несущественны.

  • User –> App: Привет, это Миша.
  • App –> Authority: Вот «это» Миша?
  • Authority и User общаются тет-а-тет.
  • Authority –> App: Да, это Миша.

OpenID Attribute Exchange 1.0 (2007) расширяет OpenID 2.0 разрешая получать и хранить профиль пользователя.

  • User –> App: Привет, это Миша.
  • App –> Authority: Вот «это» Миша? И если это Миша, то пришлите мне его email.
  • Authority и User общаются тет-а-тет.
  • Authority –> App: Да, это Миша. И его email xxx@xxx.xxx.

OAuth 1.0 (2010) позволяет пользователю разрешать приложению получать ограниченный доступ на третьесторонних серверах(third-party server), доверяющих удостоверяющему центру.

  • App –> User: Mы бы хотели получить ваши картинки с другого сервера.
  • Authority и User общаются тет-а-тет.
  • Authority –> App: Вот вам билет (access token) на 15 минут.
  • App –> Third-party server: Нам тут по билету можно получить фотографии для этого пользователя.

OAuth 2.0 (2012) делает тоже самое, что и OAuth 1.0, но только протокол существенно поменялся и стал проще.

OpenID Connect (2014) объединяет возможности OpenID 2.0, OpenID Attribute Exchange 1.0, и OAuth 2.0 в один общий протокол. Он позволяет приложениям использовать удостоверяющий центр для:

  • Проверять учетные данные пользователя.
  • Получать профиль пользователя (или его части).

Важно понимать, что OpenID Connect не дает доступ к внешним ресурсам. Он использует OAuth 2.0 для того, чтобы представить параметры профиля как будто это такие ресурсы.

Обычно в системах встречаются разные компоненты: пользователи, работающие через браузер, пользователи, взаимодействующие с сервером через мобильные приложения, и просто серверные приложения, нуждающиеся в принадлежащих вам данных, хранящихся на других серверах, доступ к которым осуществляется через Web API.

Single sign-on — технология единого входа — позволяет пользователю переключаться между различными приложениями без повторной аутентификации. Используя SSO можно избежать множественных логинов, так что пользователь просто не будет замечать этих переключений. При этом ситуации, когда в рамках вашей инфраструктуры таких приложений будет больше одного, встречаются постоянно. Технология единого входа особенно удобна в больших энтерпрайз-системах, состоящих из десятков приложений, слабо связанных между собой. Вряд ли пользователи будут довольны, вводя логин и пароль при каждом обращении к системе учета рабочего времени, корпоративному форуму или внутренней базе документов.

В качестве реализации мы рассматриваем протокол OAuth2. В принципе, существуют и другие, например, Kerberos, успешно взаимодействующий с Windows, но в случае гетерогенной сети, в которой существуют компьютеры, использующие и Windows-, и Mac-, и UNIX-системы, использовать проприетарные протоколы зачастую неудобно. Тем более, это касается случаев, когда доступ к вашим сервисам осуществляется через веб — здесь OAuth2 оказывается лучшим кандидатом.

На рисунке выше показано, какие именно протоколы используются при каждом типе взаимодействия.

Как мы знаем из раздела «разбираемся детально ху из ху», OpenID Сonnect нужен, чтобы получить у пользователя его учетные данные и проверить их. OAuth 2.0 нужен, чтобы получать токены доступа и с ними обращаться к ресурсам.

Сервис выдачи токенов

Open ID Connect Provider — важнейший объект всей конструкции централизованного сервиса аутентификации, он также может называться Security Token Service, Identity Provider authorization server и т. д. Различные источники называют его по-разному, но по смыслу это сервис, который выдает токены клиентам.

  • Аутентифицировать пользователей, используя внутреннее хранилище пользователей или внешний источник (например, Active Directory).
  • Управлять клиентами (хранить) и аутентифицировать их.
  • Предоставлять управление сессией и возможность реализации Single sing-on.
  • Выдавать identity-токены и access-токены клиентам.
  • Проверять ранее выданные токены.

Клиент

Client — устройство или программа (браузер, приложение), которым требуется либо токен для аутентификации пользователя, либо токен для доступа к какому-то ресурсу (подразумевается, что данный ресурс «знаком» с тем конкретным «Security Token Service» у которого клиент запрашивает токен для доступа).

Пользователь

User — собственно конечный пользователь — человек.

Область (scope)

Scope — идентификатор ресурса, к которому клиент хочет получить доступ. Список scope посылается в адрес сервиса выдачи токенов в составе запроса на аутентификацию.

По умолчанию все клиенты имеют возможность запрашивать любые области, но это можно (и нужно) ограничивать в конфигурации сервиса выдачи токенов.

Scopes бывают двух видов:

  1. Identity scopes — это запрос информации о пользователе. Его имя, профиль, пол, фотография, адрес электронной почты и т. д.
  2. Resource scopes — имена внешних ресурсо (Web APIs), к которым клиент хочет получить доступ.

Запрос на аутентификацию

Authentication/Token Request — процесс запроса аутентификации.

В зависимости от того какие области (scopes) запрошены, сервис выдачи токенов вернет:

  1. Только Identity Token, если запрошены только Identity scopes.
  2. Identity Token и Access Token, если запрошены также и Resources scopes.
  3. Access Token и Refresh Token, если запрошeн Offline Access.

Более подробно про процесс аутентификации можно прочесть в разделе «процесс aутентификации».

Токен личности

Identity Token — подтверждение аутентификации. Этот токен содержит минимальный набор информации о пользователе.

Токен доступа

Access Token — информация, что конкретному пользователю разрешается делать. Клиент запрашивает Access Token и затем использует его для доступа к ресурсам (Web APIs). Access Token содержит информацию о клиенте и пользователе, если она присутствует. Важно понимать, что есть такие типы авторизации, при которых пользователь в процессе непосредственно не участвует (подробнее об этом в следующей части)

Токен обновления

Refresh Token — токен, по которому STS вернет новый Access Token. В зависимости от режима работы, Refresh Token может быть многоразовым и одноразовым. В случае с одноразовым токеном, при запросе нового Access Token будет также сформирован готовый Refresh Token, который следует использовать при повторном обновлении. Очевидно, что одноразовые токены более безопасны.

Более подробно о составе токенов в разделе «структура токена».

При обращении пользователя к клиенту, тот перенаправляет пользователя на Open ID Connect Provider, который запрашивает у пользователя логин и пароль. В случае успешного прохождения проверки параметров аутентификации он возвращает назад identity token и access token, с которыми пользователь может обращаться к защищенному ресурсу.

Формат

В реализации OAuth2 используется так называемый jwt-токен, который состоит из трех частей. Допустим, при обращении к Identity provider вы отправляете логин/пароль и в ответ получаете токен. Он будет включать в себя: Header (заголовок), Payload (контент) и Signature (подпись). На сайте jwt.io его можно декодировать и посмотреть содержимое формате JSON. На этом сайте вы также найдете описание правил формирования jwt-токенов.

В том, что токены в процессе обмена передаются незашифрованными, ничего страшного нет. Мы изначально исходим из предположения, что коммуникация происходит по защищенному HTTPS-каналу, и повторное шифрование токена было бы избыточным. Единственное, в чем нам нужно убедиться – то, что токен не был подменен или сфальсифицирован на клиентской стороне, для этого достаточно иметь подпись и проверять ее на сервере. Кроме того, токен не содержит никакой критически важной информации.

Кроме identity tokens, есть еще и аccess tokens, которые содержат информацию о выданных пользователю клеймах. Срок действия access token достаточно короткий, потому что его хищение может обеспечить несанкционированный доступ к ресурсу. Т. е. злоумышленник, если ему удастся заполучить токен этого типа, доступ получит на очень непродолжительное время. Для получения нового access token используется refresh token, который обычно не фигурирует в незащищенных средах, в частности в режиме доступа из браузера он вообще не используется. Какие именно токены будут возвращены клиенту в процессе аутентификации, разберемся в следующей части.

Основные поля

Кратко остановимся на том, какие есть стандартные полях в токене и зачем они нужны:

  • iss — адрес или имя удостоверяющего центра.
  • sub — идентификатор пользователя. Уникальный в рамках удостоверяющего центра, как минимум.
  • aud — имя клиента для которого токен выпущен.
  • exp — срок действия токена.
  • nbf — время, начиная с которого может быть использован (не раньше чем).
  • iat — время выдачи токена.
  • jti — уникальный идентификатор токен (нужен, чтобы нельзя был «выпустить» токен второй раз).

В этой статье мы постарались дать теоретический и терминологический фундамент, который понадобится нам создании работающего решения в следующих статьях.

Минимальная реализация интеграция Identity Server в ваше приложение выглядит так:

Минимальная реализация интеграции веб-клиента с Identity Server:

Минимальная реализация интеграции веб-API с Identity Server:

Источник

Сообщения, отправленные пользователем: kiv1c

Индекс форума »
Профиль для kiv1c
»
Сообщения, отправленные пользователем kiv1c

1

2

3

Перейти

Перейти на стр….

Автор Сообщение

Компонент МЕРКУРИЙ
» Технические вопросы и проблемы по работе с автоматизированной системой МЕРКУРИЙ
» Перейти к сообщению
Я стесняюсь спросить, только у меня не проходит аутентификация ? Хочу загрузить справочник «Цели реализации». Вчера вечером все работало.


Компонент МЕРКУРИЙ
» Технические вопросы и проблемы по работе с автоматизированной системой МЕРКУРИЙ
» Перейти к сообщению
hawksib, проверяйте доступ- у меня получилось авторизоваться на на Меркурий.ГВЭ.


Компонент МЕРКУРИЙ
» Технические вопросы и проблемы по работе с автоматизированной системой МЕРКУРИЙ
» Перейти к сообщению
Вчера до полуночи столкнулся с проблемой авторизации. Думал ну наконец то на 2.0 переходим. Ну да, куда там. Сейчас вообще все «упало».

Хорошо хоть Меркурий.ХС работает.


Компонент МЕРКУРИЙ
» Интеграция с 1С
» Перейти к сообщению
сделал выгрузку cf со всеми необходимыми xdto пакетами

https://drive.google.com/open?id=0ByksGTNeAAfKdno5VXVwMFhPVU0


Компонент МЕРКУРИЙ
» Интеграция с 1С
» Перейти к сообщению

gni wrote: пустое значение для localTransactionId недопустимо.

просто заполняйте туда какой-нибудь номер. например номер документа по которому делается транзакция.


Компонент МЕРКУРИЙ
» Технические вопросы и проблемы по работе с автоматизированной системой МЕРКУРИЙ
» Перейти к сообщению
нашел ОШИБКУ при оформлении через API производства.

делаю ProductionOperation, указываю в поле vetDocument поля cargoInspected и cargoExpertized в true

а в веб-интерфейсе они все равно не заполнены, написано «не подвергнута ветеринарно-санитарной экспертизе»

вот пример запроса

https://pastebin.com/Pc6TcSV1


Компонент МЕРКУРИЙ
» Интеграция с 1С
» Перейти к сообщению

ksu66 wrote:

kiv1c wrote:

Маринин wrote:Добрый день!

При отправке производственной партии вышла ошибка:

«MERC01263» Указанная единица измерения не разрешена для данной вырабатываемой продукции.

Как узнать список разрешенных Ед изм по видам продукции?

у меня то же было. не знаю, списка единиц измерения по видам пока не нашел .

методом перебора делаю — где-то кг, где-то штуки, где-то головы (живые животные)

взял и поставил ед.измерения (от без исходности) при произв. операции для продукции такую же как и для сырья

и операция прошла успешно, хотя до этого ни в какую не хотела делать выпуск «шт» из «кг»,

а вот выпуск «кг» из «кг» сделала.

кто нибудь может это логически объяснить.

нет, только авторы меркурия знают. там random какойто


Компонент МЕРКУРИЙ
» Интеграция с 1С
» Перейти к сообщению

Маринин wrote:Добрый день!

При отправке производственной партии вышла ошибка:

«MERC01263» Указанная единица измерения не разрешена для данной вырабатываемой продукции.

Как узнать список разрешенных Ед изм по видам продукции?

у меня то же было. не знаю, списка единиц измерения по видам пока не нашел .

методом перебора делаю — где-то кг, где-то штуки, где-то головы (живые животные)


Компонент МЕРКУРИЙ
» Интеграция с 1С
» Перейти к сообщению

ksu66 wrote:Подскажите коллеги!

оформляю входную операцию ProcessIncomingConsignmentRequest на тестовой бд

ответ получаю

error code=»MERC13244″ Указанная ветеринарная форма в сведениях о ветеринарно-сопроводительном документе не разрешена для данного документа

подскажите какие типы ВСД доступны для данной операции

У вас поле vetCertificatePresence заполнено в PAPER? если в ELECTRONIC то достаточно указать только uuid входящего ЭВСД

Я так понимаю что для входящей операции на бумаге должно быть либо LIC2 либо LIC1.

хотя если брать Электронные, там у транспортных форма у меня была либо NOTE4 либо LIC2


Компонент МЕРКУРИЙ
» Интеграция с 1С
» Перейти к сообщению

nifor wrote:ОбъектXDTO.batch.volume — всегда 0. А в вэб интерфейсе эта запись с количеством. Скриншоты прилагаю !!!

volume — это остаток записи. у вас прекрасно видно на 2 скриншоте что остаток 0.

запись была куда-то израсходнована (в производство или в транспортную операцию)

А как вы эту запись создали для начала?


Компонент МЕРКУРИЙ
» Интеграция с 1С
» Перейти к сообщению

nifor wrote:

Проработало 1 день !!! Теперь при попытке подключения такая ошибка ОтветWeb = СоединениеWeb.ОтправитьДляОбработки(ЗапросWeb);

по причине:

Ошибка работы с Интернет: Ошибка инициализации SSL-соединения

Посмотрите реализацию в http://infostart.ru/public/560823/

Там сделано так:

ЗапросWeb = Новый HTTPЗапрос(«platform/services/ApplicationManagementService»);

ЗапросWeb.УстановитьТелоИзСтроки(Строка);

СоединениеWeb = Новый HTTPСоединение(ПараметрыПодключения.Адрес, ПараметрыПодключения.Порт, ПараметрыПодключения.Логин, ПараметрыПодключения.Пароль,,Истина);

ОтветWeb = СоединениеWeb.ОтправитьДляОбработки(ЗапросWeb);


Компонент МЕРКУРИЙ
» Интеграция с 1С
» Перейти к сообщению
создал тему для программистов на форуме инфостарта, надеюсь на обсуждение вопросов в ней

http://forum.infostart.ru/forum15/topic171520/


Компонент МЕРКУРИЙ
» Технические вопросы и проблемы по работе с автоматизированной системой МЕРКУРИЙ
» Перейти к сообщению
[quote=Сергеевна-Я]Подскажите есть один ХС(1) с разными юр.и фактическими адресами, также он имеет 4 филиала по стране, каждый с разными юр.и факт.адресами, ИНН один на всех, а вот остальные реквизиты разные.Меркурий регистрирует только ХС (1), хотя торговля осуществляется напрямую между филиалами и контрагентами. Как нам быть?Может стоит фирму не только по ИНН регистрировать?[/quote]

у вас должно быть в Меркурии созданы 4 площадки (поднадзорные объекты, или enterprise) с этими адресами и между ними можно осуществлять перевозку (транспортную операцию) без смены владельца.

юрлицо остается одно и то же, а площадка меняется.

Если эти площадки в Меркурий не внесены, то надо искать ветврачей из соответствующих регионов, они их могут создать.


Компонент МЕРКУРИЙ
» Технические вопросы и проблемы по работе с автоматизированной системой МЕРКУРИЙ
» Перейти к сообщению
Добрый день!

На тестовом контуре получилось сделать полный цикл работы с Меркурий из 1С — прием входящей партии по ГУИД Эвсд (дали партнеры)

У меня создалась запись складского журнала, все ок.

далее я из этой партии (туши говядины) произвел сырье (фарш) а из сырья произвел готовую продукцию с подвидом «готовая продукция из говядины»

затем на готовую продукцию оформил транспортный ЭВСД.

Однако, при просмотре транспортного ЭВСД, видно номер лишь предыдущего производственного ВСД, и то в виде номера, а не в виде ГУИД

Номер или гуид входящего всд, а также номер пр-ва №1 (туши->фарш) вообще не видно ни в веб-интерфейсе, ни через запросы типа GetVetDocumentByUuidOperation к API.

КАК ЖЕ ТОГДА РАБОТАЕТ ПРОСЛЕЖИВАЕМОСТЬ В МЕРКУРИИ??

При этом, возможно, нужно правильно заполнить поле precedingVetDocuments при запросе prepareOutcomingConsignmentRequest, но непонятно как.


Компонент МЕРКУРИЙ
» Технические вопросы и проблемы по работе с автоматизированной системой МЕРКУРИЙ
» Перейти к сообщению
Добрый день!

в запросе к API указываю в поле precedingVetDocuments строковую информацию о входящих документах

(например Вход. вет.св-ва: №111111 от 20.02.2017г )

но в веб-интерфейсе и в ответном prepareOutcomingConsignmentResponse это поле пропадает!

в чем может быть дело?

еще и поле transferPermit примерно так же — в ответном xml prepareOutcomingConsignmentResponse Оно есть

а в веб-интерфейсе ГВЭ не заполнено

 

Индекс форума »
Профиль для kiv1c
»
Сообщения, отправленные пользователем kiv1c

1

2

3

Перейти

Перейти на стр….

Перейти: 

 

Убираем авторизацию пользователя у веб-сервиса

Механизм Web-сервисов позволяет использовать 1С:Предприятие 8 как набор сервисов в сложных распределенных и гетерогенных системах, а также позволяет интегрировать 1С:Предприятие 8 с другими промышленными системами использованием сервисно-ориентированной архитектуры.

Публикация веб-сервисов выполняется через конфигуратор, для этого нужно открыть окно Публикация на веб-сервере, нажав Администрирование -> Публикация на веб-сервере…

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="/DemoSSL"
ib="File=&quot;C:1сБиблиотекаСтандартныхПодсистемDemoSSL&quot;;">
<ws>
<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="MessageExchange"
alias="messageexchange.1cws"
enable="true"/>
<point name="MessageExchange_2_0_1_6"
alias="messageexchange_2_0_1_6.1cws"
enable="true"/>
<point name="RemoteAdministrationOfExchange"
alias="RemoteAdministrationOfExchange.1cws"
enable="true"/>
<point name="RemoteAdministrationOfExchange_2_0_1_6"
alias="RemoteAdministrationOfExchange_2_0_1_6.1cws"
enable="true"/>
</ws>
</point>

Тег ws содержит описание публикации веб-сервисов. Если мы обратимся к веб-сервису с помощью браузера, введя его адрес, например, http://192.168.0.85/DemoSSL/ws/exchange.1cws, то увидим окно авторизации, которое попросит ввести логи и пароль пользователя 1С:

2. Окно авторизации веб-сервиса

Обратите внимание, адрес к веб-сервису строится по следующему шаблону:
[СетевойАдресКомпьютера]/[ИмяПубликации]/ws/[АдресВебСервиса]

Создадим пользователя 1С с логином User и паролем 123456, от имени которого в дальнейшем будет происходить автоматическая авторизация.
Замечено, окно авторизации корректно работает с логином, написанным на латинице, иначе может появится ошибка:


<html>
<head><title> A server error occurred. </title></head>
<h1> а?б?б?аЕаНб?аИб?аИаКаАб?аИб? аПаОаЛб?аЗаОаВаАб?аЕаЛб? аНаЕ аВб?аПаОаЛаНаЕаНаА.   </h1>
<hr/>
An error occurred processing this request.</html>

Допустим, необходимо, что бы веб-сервис exchange.1cws не требовал авторизацию. Для этого из файла default.vrd удаляем информацию о данном веб-сервисе, то есть удаляем строчки:
<point name=»Exchange»
alias=»exchange.1cws»
enable=»true»/>

Создаем рядом с файлом default.vrd файл с именем exchange и расширением 1cws (exchange.1cws). Откроем файл текстовым редактором, укажем кодировку UTF-8 без BOM и запишем следующие строчки:

<?xml version="1.0" encoding="UTF-8"?>
<service
namespace="http://www.1c.ru/SSL/Exchange"
name="Exchange"
connectString="File=&quot;C:1сБиблиотекаСтандартныхПодсистемDemoSSL&quot;;usr=&quot;User&quot;;pwd=&quot;123456&quot;"/>

Значения атрибутов тэга service берем из следующих мест:

  • namespace — указываем пространство имен веб-сервиса (см. рисунок 3);
  • name — указываем имя сервиса (см. рисунок 1);
  • connectString — указывается расположение информационной базы (см. рисунок 4) + логин и пароль пользователя, от имени которого будет производиться авторизация. Для файлового варианта и клиент-серверного значение данного атрибута будет отличаться. Пример для клиент-серверного варианта: Srvr=&quot;localhost&quot;;Ref=&quot;DemoSSL&quot;;usr=&quot;User&quot;;pwd=&quot;123456&quot;
3. Пространство имен веб-сервиса
4. Расположение информационной базы

Теперь веб-сервис Exchange доступен без запроса авторизации по адресу http://192.168.0.85/DemoSSL/exchange.1cws. Обратите внимание, что изменился путь к веб-сервису, теперь он не содержит уровень ws.

UPD 15.03.2016:
Если стоит апач(а может и не только) — то по дефолту 1С пытается авторизовать пользователя системы вида: \[DOMAIN]HOSTNAME$, если в базе создать такого пользователя с авторизацией системы — то плясать с бубном не нужно, а дальше рулите ролями.

UPD 12.04.2017:
Создать в операционной системе пользователя, под ним настроить запуск Apache. В 1С завести пользователя, установить галку Аутентификация операционной системы и выбрать пользователя Apache. Правда при такой настройке не получится выборочной аутентификации — будут доступны все сервисы, связанные с WEB.

Понравилась статья? Поделить с друзьями:
  • При включении компьютера открывается биос как исправить виндовс 10 gigabyte
  • При активации фейстайм произошла ошибка что делать
  • При вызове driverpackageinstall возвращена ошибка 536870329
  • При включении компьютера открывается биос как исправить asus
  • При активации произошла ошибка imessage на iphone