NTLM代理没有密码?

我使用HTTP代理工作在一个企业Windowsnetworking(我login到)。 当我使用Internet Explorer时,神奇地使用代理,而不需要input我的密码。 某些其他程序似乎也pipe理这个,就像JavaWebStart有一个“使用浏览器设置”选项。

然而,当我使用curl或wget等脚本/程序从http获取内容时,或者在我的Java代码中执行时,我似乎需要将密码存储在某处,这对于安全性来说显然不是最好的。

我怎样才能以编程方式获得Internet Explorer的无密码访问?

我认为这是一个堆栈溢出的问题,因为我是一个程序员,我需要我的程序/脚本工作,而不input密码,但我可以看到,其他人可能认为它属于服务器故障/超级用户。

我知道像curl中的–proxy-ntlm这样的设置,但是这仍然需要一个ntlm用户名和密码。

在没有别人回答的情况下,我发现了这些,希望对别人有用。

执行摘要:

  1. http://curl.haxx.se/latest.cgi?curl=win32-ssl下载SSPI启用curl切换到;Windows,zip,启用SSL,启用SSPI(7.19.5)
  2. http://www.slproweb.com/products/Win32OpenSSL.html安装Windows Open-SSL,并捐赠以支持其带宽成本。
  3. 如果需要,请安装Visual C ++ 2008可再发行组件 。
  4. 使用curl来获取页面: curl.exe -U : --proxy-ntlm --proxy myproxy.com:8080 http://www.google.com

更详细的解释

使用Windowslogin机制进行身份validation的神奇短语是SSPI 。 这给了一个很好的谷歌search短语。 我仍然没有find在java或wget中使用SSPI进行HTTP代理authentication的好方法。

但是, curl(下载工具) 确实支持SSPI,但只能在某些版本中使用。 不幸的是,默认的cygwin构build不是其中之一。 您可以通过获取详细的版本信息来了解您的curl构build是否支持SSPI:

 curl -v -V 

如果支持SSPI,将在特性行中提及。

要获得支持SSPI的Windows版本,我不得不去http://curl.haxx.se/latest.cgi?curl=win32-ssl ,然后将下载选项更改为Windows,zip,启用了SSL的SSPI (7.19.5) 。 当你读这个版本号可能已经改变。

然后这从命令行默默地失败。 当我从Windows资源pipe理器中运行时,我收到一条有关缺lesslibeay32.dll的消息。 从windows得到这个的一个方法是从openssl.org到windows版本的唯一链接。 这个生产者要求捐款来支付带宽成本。 另一种方法将是从源头上build立自己的。

毕竟,这个curl与下面的命令行工作:

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

-U :configuration密码,其他命令行选项设置代理。 您可能必须更改您的代理和端口设置。

如果只有cygwin的curl版本支持SSPI,这将会更容易。 我现在要去提出这个请求。

请注意我的编辑包含关于-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] 

对于那个很抱歉!

可能会有点迟,但是还是想提一下。 原来的问题是通常询问关于NTLM代理身份validation没有密码在用户已login的Windows上。毫无疑问,curl可以做到这一点,但我想提供另一种select。

NTLMAps和Cntlm是作为中介代理执行NTLM身份validation的代理。 但是,他们都需要用户/通行证,因为他们主要针对Linux用户。 我历史上在Windows上使用这些工具,但同样需要为他们提供凭据而感到恼火。

因此,我已经为Windows创build了Px,这是一个类似于上述两者的HTTP代理,但使用SSPI来pipe理公司代理所需的身份validation。 所有你需要configuration的是代理服务器和端口。 它有助于现有的应用程序无法通过NTLM代理进行通信,例如pip和npm。

为了开发自己的应用程序,代码还应该帮助弄清楚如何在Python中执行此操作,以及可能访问SSPI的语言。