簡體   English   中英

NTLM 代理背后的 NPM

[英]NPM behind NTLM proxy

是否可以在使用NTLM身份驗證的 HTTP 代理后面運行npm install 如果是,如何設置服務器的地址和端口、用戶名和密碼?

我是這樣解決的(操作系統: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.將以上三行復制到 cntlm.ini 中,在Domain字段行下。 再一次,不要填寫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 https://registry.npmjs.org

7.現在npm viewnpm install等應該可以工作了。 例子:

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

CNTLM 答案對我有用,但連接錯誤使 npm 無法使用。 我已經通過在 CNTML 中添加這個頭文件來修復它們。

Header      Connection: close

另一種選擇是使用Px for Windows ,它代表您像 Cntlm 和 NTLMAps 一樣談論 NTLM,而無需提供您的憑據。 它通過 SSPI 使用登錄用戶的憑據。

當您需要使用 npm 時,您可以嘗試運行Fiddler ,而不是運行 CNTLM。 我發現這適用於相當封閉的環境(例如投資銀行)。 它也是一個相當容易為(如果需要)制作商業案例的工具,因為它對於檢查/創建/更改 HTTP 流量非常寶貴。

由於使用了智能通行證身份驗證,我之前不得不走這條路 - 即我們實際上沒有密碼。 在這些位置設置 CNTLM 是不可能的。

您可以將設置作為參數傳遞:

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

CNTLM 對我不起作用。 我嘗試了所有可能的組合。 NPM 給出身份驗證錯誤。 Fiddler 前來救援並節省了我的時間。 它易於安裝和配置。 將 Fiddler Rule 設置為 Automatically Authenticated.In .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 代理的第二種方法是保留自動身份驗證選項/規則默認值,然后從菜單欄中轉到此設置:

工具 > Telerik Fiddler 選項 > 連接選項卡

單擊允許遠程計算機連接復選框。 您將看到一個對話框,說明啟用此選項的后果。 重新啟動 Fiddler 並更新.npmrc文件,如上所示。 每當您需要 npm 訪問注冊表站點時,只需運行 Fiddler。 此設置不會影響 Fiddler 為其他捕獲運行的方式。

  1. 使用記事本打開 C:\\users\\username\\ 文件夾中的.npmrc文件
  2. 添加以下幾行..
  3. 用正確的值替換域、用戶名、密碼、服務器名
  4. 立即嘗試安裝或獲取軟件包
  5. 如果從 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

CNTLM 按照 KOL 的建議為我工作。 感謝 KOL。 只是想補充一點,個別代理中有一些奇怪的地方,因此在使用簡單的cntlm -H時密碼可能不可接受。

使用cntlm -I -M http://test.com並在擦除舊配置后復制以下配置,您應該通過。

輸出就像

---------------------------------------------------
Auth            NTLM
PassNT          8EE9B595A89F7D8774C2146FB302CBCF
PassLM          78901DA9889727EDE28EF9F2769485B9
----------------------------------------------------

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM