Имя: Пароль:
1C
1С v8
HTTPСоединение, HTTPЗапрос, аутентификация ОС
0 Darjeeling
 
11.03.19
10:11
Всем добрый  день!

Ситуация такая, в браузере при наборе строки «ИмяХоста/authentication-microservice/auth», мне возвращается структура с полями type и credeintials.

Когда я из 1С при помощи объекта HTTPСоединение стучусь по этому адресу (свойство ИспользоватьАутентификациюОС стоит Истина), мне выдается следующая ошибка:

<h1>Unauthorized</h1>
<p>This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
<hr>

Подскажите, пожалуйста, в какую сторону нужно копать, на ИТС не нашла ничего.
1 Asmody
 
11.03.19
10:18
(0) Какой тип авторизации используется сервисом?
2 Darjeeling
 
11.03.19
10:42
(1) Kerberos, если вопрос был про это. (Я в этой теме очень плаваю).
3 Asmody
 
11.03.19
11:11
(2) Я про http authentication.
4 Cyberhawk
 
11.03.19
11:42
Копать в сторону АПИ-документации (или требований) поставщика сервиса касательно аутентификации
5 Darjeeling
 
11.03.19
12:58
(3)
В браузере я смотрю (по F12) там заголовок "Authotization" = Negotiate ****здесь аброкадабра из букв****.

В 1С в HTTPЗапрос я в заголовоки устанавливаю только "Content-Type", а "Authotization" не передаю, я думала платформа сама сгенерирует его при установленном параметре ИспользоватьАутентификациюОС.
6 Asmody
 
11.03.19
13:23
(0) HTTPСоединение где вызывается - на сервере или на клиенте?
7 Darjeeling
 
11.03.19
13:31
(6) Я и так и так пробовала, результат одинаковый.
8 Darjeeling
 
11.03.19
13:55
Вообще, когда я смотрю в браузере у меня там идет два запроса get, первый возвращает код 401 и один из заголовков ответа "WWW-Authenticate" = "Negotiate " + "кракозябина"
А второй запрос уже передает  заголовок "Authotization" = "Negotiate" + "другая кракозябина", и этот запрос получает возвращается уже ответ с кодом 200.

Но в 1С в ответе заголовок ответа "WWW-Authenticate" содержит только одно слово "Negotiate"

Вообще, интересно флаг ИспользоватьАутентификациюОС у http-соединение на что влияет? Платформа при этом генерирует какие-то заголовки?
9 Darjeeling
 
11.03.19
14:06
Я так понимаю эти аброкадабры, это kerberos ticket-ы, но не понятно как их в 1С сгенерировать
10 Asmody
 
11.03.19
14:26
(9) 1С их сама генерит если под Windows работает. Только на сервере она их будет генерить от имени того пользователя, под которым служба сервера работает. Под Linux 1Ска тоже kerberos понимает (с бубном), но прокидывает ли она тикет в HTTPСоединение не могу сказать.
11 Darjeeling
 
11.03.19
15:45
(10) У нас Windows, нам как раз и надо от имени сервера генерировать (но я всяко пробовала: и сервер, и клиент), хотелось понять как именно их генерировать.
Пока решили получать токен при помощи COM-объекта("WinHttp.WinHttpRequest.5.1"):

WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.SetAutoLogonPolicy(0);
WinHttp.Open("GET", СтрокаЗапросаИзБраузера, Ложь);
WinHttp.Send();

После этого в WinHttp.ResponseText возвращается строка-json с нужными полями(type, credentials).
12 oleg_km
 
11.03.19
16:04
(9) Через фидлер надо смотреть, что там 1С формирует
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.