NPM背后的NTLM代理

可以在使用NTLM身份validation的HTTP代理后面运行npm install吗? 如果是,我怎样才能设置服务器的地址和端口,用户名和密码?

我解决了这个问题(操作系统:Windows XP SP3):

1.下载CNTLM安装程序并运行它。

2.在cntlm.ini中查找并填写这些字段。 不要填写Password字段,将未encryption的密码存储在文本文件中绝不是一个好主意。

 Username YOUR_USERNAME Domain YOUR_DOMAIN Proxy YOUR_PROXY_IP:PORT Listen 53128 

3.打开控制台,然后键入这些命令以生成密码哈希值。

 > cd c:\the_install_directory_of_cntlm > cntlm -H Password: ...type proxy password here... PassLM D6888AC8AE0EEE294D954420463215AE PassNT 0E1FAED265D32EBBFB15F410D27994B2 PassNTLMv2 91E810C86B3FD1BD14342F945ED42CD6 

4.将以上三行复制到cntlm.ini中的Domain字段行下。 再一次,不要填写Password字段。 保存cntlm.ini。

5.打开服务pipe理器(从命令行:services.msc),并启动名为“CNTLMvalidation代理”的服务。

6.在控制台中,键入以下这些行:

 > npm config set proxy http://localhost:53128 > npm config set https-proxy http://localhost:53128 > npm config set registry http://registry.npmjs.org 

7.现在npm viewnpm install等应该工作。 例:

 > npm view qunit ...nice answer, no errors :) 

CNTLM答案正在为我工​​作,但连接错误使npm无法使用。 我已经通过在CNTML中添加这个头来修复它们。

 Header Connection: close 

您可以将设置作为parameter passing:

 npm --proxy=http://username:password@proxyserver:port --proxy-https=http://username:password@proxyserver:port --registry=http://registry.npmjs.org/ install whateveryouwanttoinstall 

而不是运行CNTLM,而是需要使用npm时,可以尝试运行Fiddler 。 我发现这个工作在相当封闭的环境下(如投资银行)。 这也是一个相当容易的工具(如果你需要的话),因为它对检查/创build/改变HTTPstream量是非常有用的。

由于使用了智能通行authentication,我不得不走这条路线 – 也就是说我们实际上没有密码。 在那些设立CNTLM的地方是不可能的。

另一种select是使用Px for Windows ,而不必提供您的凭据,就像Cntlm和NTLMAps一样代表NTLM。 它通过SSPI使用login用户的凭证。

CNTLM没有为我工作。 我尝试了所有可能的组合。 NPM正在给authentication错误。 提琴手前来救援,节省了我的时间。 它很容易安装和configuration。 将Fiddler规则设置为自动validation。在.npmrc中设置这些

 registry=http://registry.npmjs.org proxy=http://127.0.0.1:8888 https-proxy=http://127.0.0.1:8888 http-proxy=http://127.0.0.1:8888 strict-ssl=false 

它为我工作:)

另一个提琴手选项:

使Fiddler充当NTLM和其他协议的HTTP代理的第二种方法是将自动身份validation选项/规则的默认值保留就位,并从菜单栏转到此设置:

工具> Telerik Fiddler选项>连接选项卡

点击允许远程计算机连接checkbox。 您将看到一个对话框,解释启用该选项的后果。 重新启动Fiddler并更新.npmrc文件,如上所示。 每当你需要npm来访问注册网站只需运行Fiddler。 此设置不会影响Fiddler运行其他捕捉的方式。

根据KOL的build议,CNTLM为我工作。 谢谢KOL。 只是想补充说个别代理有一些奇怪的地方,因为使用简单的cntlm -H时密码可能是不可接受的。 使用cntlm -I -M http://test.com并在清除旧configuration之后复制—–行之间的configuration,你应该通过。 输出就像

“————————————————- –

validationNTLM

PassNT 8EE9B595A89F7D8774C2146FB302CBCF

PassLM 78901DA9889727EDE28EF9F2769485B9

————————————————– – ”