Подтвердить что ты не робот

Прокси NTLM без пароля?

Я работаю в корпоративной сети Windows (с которой я вхожу) с HTTP-прокси. Когда я использую Internet Explorer, он волшебным образом использует прокси-сервер без необходимости ввода пароля. Некоторые другие программы, похоже, тоже справляются с этим, например, у JavaWebStart есть опция "Использовать настройки браузера".

Однако, когда я использую скрипты/программы, такие как curl или wget, чтобы извлекать данные из http или делать это в моем Java-коде, мне, похоже, нужно, чтобы мой пароль хранился где-то, что явно не подходит для безопасности.

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

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

Я знаю о настройках, таких как --proxy-ntlm в curl, но для этого все еще требуется имя пользователя и пароль ntlm.

4b9b3361

Ответ 1

В отсутствие ответа от кого-то еще вот что я обнаружил, я надеюсь, что это полезно для кого-то другого.

Резюме:

Более подробное объяснение

Магическая фраза для аутентификации с использованием механизма входа Windows - SSPI. Это дает хорошую поисковую фразу Google. Я все еще не нашел хороший способ использования SSPI для проверки подлинности HTTP-прокси в java или wget.

Однако curl (инструмент загрузки) делает поддержку SSPI, но только в некоторых сборках. К сожалению, сбор по умолчанию cygwin не является одним из них. Вы можете узнать, поддерживает ли ваша сборка завиток SSPI, получая подробную информацию о версии:

curl -v -V

Если поддерживается SSPI, это будет указано в строке функций.

Чтобы получить версию Windows, поддерживающую SSPI, мне пришлось перейти на http://curl.haxx.se/latest.cgi?curl=win32-ssl, а затем изменить выбор загрузки на Windows, zip, с поддержкой SSL, с поддержкой SSPI (7.19.5). Когда вы прочтете это, номер версии может быть изменен.

Затем это тихо провалилось из командной строки. Когда я бежал из Windows Explorer, я получил сообщение о недостающем libeay32.dll. Один из способов получить это из окон - это ссылка на openssl.org на версия Windows. Производитель этого требует пожертвования для покрытия расходов на полосу пропускания. Другой способ - создать свой собственный источник.

И после всего этого завитка работала со следующей командной строкой:

curl.exe -U : --proxy-ntlm --proxy myproxy.com:8080 http://www.google.com

-U : не настраивает пароль, другие параметры командной строки настраивают прокси. Вероятно, вам придется изменить настройки прокси и порта.

Все это будет намного проще, если только поддержка Cygwin curl поддерживает SSPI. Я сейчас отправлю запрос на это.

Ответ 2

Обратите внимание, что мое редактирование содержит неточное предположение о -U и -u. Я представил исправление, но в промежуточной ноте:

curl -U = Authentication to a proxy
curl -u = Authentication to a server

Следовательно, первая команда должна быть:

curl.exe -U : --proxy-ntlm --proxy myproxy.com:8080 http://www.google.com

а второй - в примере для прозрачного NTLM:

curl -v -u : --ntlm [the redirection URL from Location: header]  

Простите за это!

Ответ 3

Может быть, немного поздно, но хотелось бы упомянуть об этом, тем не менее. Исходный вопрос в основном задает вопрос о прокси-сервере NTLM без паролей в Windows, где пользователь уже выполнил вход. Без сомнения, curl может это сделать, но я хотел бы дать еще один вариант.

NTLMAps и Cntlm являются прокси-серверами, которые делают NTLM auth как посреднический прокси. Тем не менее, они оба требуют пользователя/пропуск, поскольку они в основном ориентированы на пользователей Linux. Я исторически использовал эти инструменты в Windows, но был раздражен тем же требованием предоставить им учетные данные.

В результате я создал Px для Windows, который является прокси-сервером HTTP, как и выше, но использует SSPI для управления требуемым аутентификация с корпоративным прокси. Все, что вам нужно настроить, это прокси-сервер и порт. Это помогает существующим приложениям, которые не могут разговаривать через прокси-серверы NTLM, например, например, pip и npm.

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