WinHttp.WinHttpRequest.5.1 ntlm аутентификация на прокси сервере #575483


#0 by zzhiraf
Не работает аутентификация на локальном прокси-сервере. Код: ..... Настройки прокси в реестре устанавливаю таким образом: netsh winhttp import proxy source =ie (импортирую из ie)
#1 by Kreont
Подпишусь на тему :) Проверь будет ли на хп работать? Заметил у себя подобную проблему что с WinHttp.WinHttpRequest.5.1 обработка перестала работать на win7, на хп работает. гуглил на тему: вроде проблема что на вин7 какой то там выше уровень аутентификации на прохи хочет (что-типа не плайн текстом а шифровать) и потому по дефалту не идет.
#2 by zzhiraf
До аутентификации не доходит, похоже даже прокси сервер из реестра не считывается. Если задать прокси в явном виде, тогда уже возникают проблемы с аутентификацией...
#3 by Kreont
А какая хоть ошибка, сделай сообщить в исключении?
#4 by zzhiraf
Ошибка такая: по причине: Произошла исключительная ситуация (WinHttp.WinHttpRequest): Время ожидания операции истекло
#5 by Kreont
Хотя под 8-ку обект "HTTPСоединение" должен аналогчино все обработать, (то в 7-ке глюки с ним были), сейчас сам на него переписываю.
#6 by zzhiraf
HTTPСоединение соединение все нормально отрабатывает, с ним другие проблемы :)
#7 by Kreont
Код из у меня отработал без ошибок (на вих ХП проф)
#8 by Kreont
Какие другие? Интересно знать, а то теперь через него стараюсь писать...
#9 by zzhiraf
Ну, например, HTTPСоединение не может получить заголовки из ответа сервера. Заголовки можно только отправлять.
#10 by zzhiraf
А у тебя прокси-сервер используется?
#11 by Kreont
Есть прокси, правда ответ смотрю: СтатусОтправки = 407 получил.
#12 by zzhiraf
Хм, получается, что у тебя хотя бы прокси определяется. У меня до авторизации не доходит даже :)
#13 by Kreont
+ в реестре прокси задан через proxycfg.exe, хз может от того что логин пароль все таки надо еще передать
#14 by Kreont
Потестируй обработку на винХП, а не на 7-ке, может действительно проблема аналогичная до
#15 by zzhiraf
В том то и дело что логин с паролем не хочется передавать, на то это и ntlm аутентификация) proxycfg.exe это устаревшая утилита но она делает тоже самое по идее, что и netsh...
#16 by zzhiraf
На винХП нет возможности пока проверить, везде семерка стоит
#17 by zzhiraf
Кстати, если кому интересно, в .net есть другой объект, с помощью которого удается пройти прокси сервер. Вот пример кода:
#18 by Kreont
Код из у меня и на вин7-ке без ошибок отработал...
#19 by zzhiraf
Понятно... в чем же тогда может быть проблема у меня
#20 by zzhiraf
И СтатусОтправки 200?
#21 by smaharbA
мсдн - пережиток империализьма по всей видимости
#22 by Kreont
407, я потому и переписываю на HTTPСоединение только что б на вин7 заработало :)
#23 by zzhiraf
И что написано в мсдн ? :)
#24 by zzhiraf
Должен быть СтатусОтправки 200, значит у тебя тоже не работает авторизация...
#25 by zzhiraf
На самом деле из-за этого переписывать код на использование HTTPСоединение  не правильно, т к этот объект очень ограничен. Как бы потом обратно не пришлось переписывать)
#26 by smaharbA
#27 by Kreont
Автоматом из настроек реестра для WinHttp.WinHttpRequest.5.1 не работает, хотя через HTTPСоединение тестировал работает. Сейчас логин и пароль внесены в модуль (некрасиво но работает)
#28 by zzhiraf
smaharbA, спасибо, но это не особо помогает. У них в примере используется совсем другой объект, в котором можно задать схему авторизации и прочие настройки, которые просто не доступны для WinHttpRequest....
#29 by smaharbA
доступны
#30 by zzhiraf
Поспорим?)
#31 by zzhiraf
К примеру, для установки схемы авторизации используется метод WinHttpSetCredentials Вместо этого метода у WinHttpRequest есть другой с ограниченным набором параметров SetCredentials (задается только логин, пароль)
#32 by smaharbA
точно прокси с нтлм-ом ?
#33 by smaharbA
#34 by zzhiraf
Да, прокси с ntlm... У вас это работает? и я не очень понял, в чем отличие от того, что у меня написано? ... ХТТПЗапрос.Send; по причине: Произошла исключительная ситуация (WinHttp.WinHttpRequest): Не удается установить соединение с сервером
#35 by Kreont
Так может вся загвоздка в том что локальный прокси не работает вообще?
#36 by zzhiraf
У меня не работает? Как бы я тогда сидел в инете? к тому же HTTPСоединение работает с прокси без каких-либо дополнительных усилий...
#37 by smaharbA
ни в чем, работает именно с нтлм авторизацией, иначе нужно задавать имя и пароль для прокси
#38 by smaharbA
и еще 0 авторизация на прокси и сервере, если авторизация рознится, нужно задать параметры авторизации для прокси и для сервера
#39 by zzhiraf
То есть вы проверили и у вас мой код работает (авторизация на прокси проходит)? Параметры авторизации для какого сервера? на яндексе вроде нет авторизации никакой... По крайней мере у меня работает код из и там я, как видно, никаких логинов паролей и адресов прокси явно не указываю
#40 by zzhiraf
Кроме того у меня похоже вообще не определяется прокси-сервер автоматом, по крайней мере если его указать явно, то тогда Send проходит...
#41 by zzhiraf
При этом адрес прокси указан в ветке реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInternet SettingsConnectionsWinHttpSettings
#42 by zzhiraf
Не могу понять, почему не применяются никакие настройки winhttp? Настроил трассировку, но никаких логов не создается... netsh winhttp> set tracing trace-file-prefix="C: mp" level=verbose format=ansi Текущие параметры трассировки WinHTTP.    Префикс файла трассировки: C: mp    Выход трассировки: file    Уровень трассировки:  verbose (headers, APIs, and entity body)    Формат сетевого трафика: ansi    Макс. размер файла трассировки (байт): 65535
#43 by zzhiraf
Ура! Прокси после долгих мучений определился автоматом. Вот в чем дело было: It is important to note that when using proxycfg and netsh for configuration the default version you get from the command line is in the %SystemRoot%System32 directory. This configures 64 bit WinHttp. To configure applications using the 32 bit WinHttp settings use the netsh and proxycfg bits from the %SystemRoot%SysWOW64 directory instead.
#44 by zzhiraf
Теперь надо с авторизацией разобраться)
#45 by zzhiraf
Есть какие-нибудь идеи?Или я тут сам с собой разговариваю?))
#46 by zzhiraf
В каком формате вообще нужно вручную задавать логин-пароль? Я пробовал с доменом и без, авторизация не проходит... ГетЗапрос.SetCredentials("доменлогин","пароль",1); ?
#47 by Kreont
WinHttp.SetCredentials(ProxyLogin,ProxyPass,false);
#48 by Kreont
+ Перед этим: WinHttp.SetProxy(2,ProxyAdressPort);
#49 by zzhiraf
А почему false? это логин и пароль для сервера, для прокси true вроде как.
#50 by Kreont
хз, у меня фалс работает :))) А что так не идет?
#51 by zzhiraf
Неа, не идет, СтатусОтправки 407 всегда получаю, хотя логин с паролем правильно указываю...
#52 by zzhiraf
Возможно, дело в настройках Windows. Попробуйте кто-нибудь, мне не помогло) Запускаем редактор реестра (regedit). Находим ветку: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa. Внутри этой ветки нужно создать параметр LmCompatibilityLevel типа DWORD и присвоить ему значение 1 для использования LM NTLM и NTLMv2 авторизации. После этого необходимо перезагрузить компьютер.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С