Имя: Пароль:
1C
1С v8
HTTP запрос с включенной Аутентификацией ОС на web-сервере
0 EvgKolivagin
 
16.08.23
20:41
Добрый вечер!

Подскажите как выполнить подключение и http запрос при условии, что на web-сервере, где опубликован web-сервис включена аутентификация ОС
ОС - Windows
Web-сервер IIS

Выполняю соединение в таком виде

Соединение = Новый HTTPСоединение([Сервер],,[ИмяДоменногоПользователя],,,,Новый ЗащищенноеСоединениеOpenSSL,Истина)

Далее формирую запрос

HTTPЗапрос = Новый HTTPЗапрос([АдресРесурса]);  //supp-prod test-ovs
HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
HTTPЗапрос.УстановитьТелоИзСтроки(СокрЛП(СтрокаJSON),КодировкаТекста.UTF8);

Выполняю запрос

Ответ = Соединение.ВызватьHTTPМетод("GET",HTTPЗапрос,ИмяВремФайла);

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

Видимо некорректно указываю данные пользователя для подключения, подскажите как быть?
1 EvgKolivagin
 
17.08.23
14:55
Может быть нужно выполнить какие-либо настройки на Web-Сервере IIS?
2 Смотрящий
 
17.08.23
15:31
(0) СтрокаJSON - покаж что там
3 Смотрящий
 
17.08.23
15:36
И что в АдресРесурса.
4 EvgKolivagin
 
17.08.23
15:45
(2) Там json типа
[
{
"end_date": "17.07.2023 00:00:00",
"only_relevant": "true"
}
]
5 EvgKolivagin
 
17.08.23
15:50
(3) АдресРесурса = "/[имя_базы]/hs/[имя_http_сервиса]/v1/[имя_http_шаблона]"
6 yzimin
 
17.08.23
15:53
судя по тому, что ошибка по таймауту, твой запрос не может до сервера или ресурса достучаться. Не в авторизации дело.
Точно по https доступно?
7 yzimin
 
17.08.23
15:56
Соединение = Новый HTTPСоединение([Сервер],,[ИмяДоменногоПользователя],,,,Новый ЗащищенноеСоединениеOpenSSL,Истина)

тут попробовать порт указать, пароль пользователя. И укажите в явном виде таймаут, чтобы не ждать долго
8 EvgKolivagin
 
17.08.23
16:02
(6) Суть в том, что если в IIS отключить Авторизацию ОС то все прекрасно работает. Т.е такое впечатление, что с включенной авторизацией ОС IIS не авторизует пользователя(ОС) на Web-сервере и дело до авторизации в 1С даже не доходит.
9 EvgKolivagin
 
17.08.23
16:03
(7) Пробовал, не взлетело.
10 Garykom
 
17.08.23
19:29
(0) Там не все так просто.
Если типовой

Новый HTTPСоединение(<Сервер>, <Порт>, <Пользователь>, <Пароль>, <Прокси>, <Таймаут>, <ЗащищенноеСоединение>, <ИспользоватьАутентификациюОС>)

ИспользоватьАутентификациюОС = Истина

не взлетело то все очень сложно для Negotiate (Kerberos/NTLM) или NTLM

там несколько запросов и ответов надо реализовывать
"Аутентификация NTLM требует нескольких обменов между клиентом и сервером. Сервер и любые промежуточные прокси-серверы должны поддерживать постоянные соединения для успешного завершения аутентификации."
11 Garykom
 
17.08.23
19:30
<Пользователь> пробовал с доменом указывать?
12 EvgKolivagin
 
30.08.23
10:12
Решил в итоге задачу следующим образом:

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

Для другой публикации на закладке "HTTP сервисы" взвел галку "Публиковать HTTP сервисы по умолчанию" и отметил в списке сервисов тот который нужно опубликовать.

Получилось две публикации на одном веб-сервере.

Далее нужно в диспетчере служб IIS для первой публикации сделать активной Kerberos аутентификацию (Аутентификация ОС) а для второй публикации отключить Kerberos аутентификацию.

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