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 view
, npm 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
————————————————– – ”