|
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с будут осуществляться через вторую публикацию. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |