是否可以在使用npm install
身份验证的HTTP代理后面运行NTLM?如果是,我该如何设置服务器的地址和端口,用户名和密码?
答案 0 :(得分:124)
我用这种方式解决了它(操作系统:Windows XP SP3):
1。下载CNTLM安装程序并运行它。
2. 在cntlm.ini中查找并填写这些字段。 请勿填写Password
字段,将未加密的密码存储在文本文件中绝不是一个好主意。
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. 将以上三行复制到Domain
字段行下的cntlm.ini中。 再次,请勿填写Password
字段。保存cntlm.ini。
5. 打开服务管理器(从命令行:services.msc),然后启动名为“CNTLM Authentication Proxy”的服务。
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 :)
答案 1 :(得分:11)
CNTLM的答案对我有用,但是由于连接错误导致npm无法使用。我已经通过在CNTML中添加此标题来修复它们。
Header Connection: close
答案 2 :(得分:9)
另一种选择是使用 Px for Windows代表您使用NTLM,如Cntlm和NTLMAps,而无需提供您的凭据。它通过SSPI使用登录用户的凭据。
答案 3 :(得分:8)
当您需要使用npm时,您可以尝试运行Fiddler,而不是运行CNTLM。我发现这在相当封闭的环境(例如投资银行)中有效。它也是一个很容易为(如果需要)创建业务案例的工具,因为它对于检查/创建/更改HTTP流量非常有用。
由于使用了智能通行认证,我之前必须走这条路线 - 即我们实际上并没有密码。在那些地方建立CNTLM是不可能的。
答案 4 :(得分:5)
您可以将设置作为参数传递:
npm --proxy=http://username:password@proxyserver:port --proxy-https=http://username:password@proxyserver:port --registry=http://registry.npmjs.org/ install whateveryouwanttoinstall
答案 5 :(得分:5)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script>
$('.wrapper').prepend($('.Content:nth-of-type(2)'))
</script>
它对我有用:)
另一个提琴手选项:
使Fiddler充当NTLM和其他协议的HTTP代理的第二种方法是保留auto authenticate options / rules默认值并从菜单栏转到此设置:
工具&gt; Telerik Fiddler选项&gt; “连接”选项卡
单击允许远程计算机连接复选框。您将看到一个对话框,说明启用此选项的后果。重新启动Fiddler并更新 .npmrc 文件,如上所示。每当你需要npm访问注册表站点时,只需运行Fiddler。此设置不会影响Fiddler为其他捕获运行的方式。
答案 6 :(得分:4)
.npmrc
文件
如果从Vs2017尝试,请关闭并重新打开VS IDE,然后才能运行
proxy=http://DOMAIN%5CUSERNAME:PWD@proxy.servername.com:6050
https-proxy=http://DOMAIN%5CUSERNAME:PWD@proxy.servername.com:6050
http-proxy=http://DOMAIN%5CUSERNAME:PWD@proxy.servername.com:6050
strict-ssl=false
答案 7 :(得分:0)
CNTLM按照KOL的建议为我工作。谢谢KOL。只是想补充一点,在个别代理中存在一些奇怪之处,因为在使用简单cntlm -H
时密码可能是不可接受的。
使用cntlm -I -M http://test.com
并在删除旧配置后复制以下配置,您应该完成。
输出就像
---------------------------------------------------
Auth NTLM
PassNT 8EE9B595A89F7D8774C2146FB302CBCF
PassLM 78901DA9889727EDE28EF9F2769485B9
----------------------------------------------------