NPM за прокси NTLM

Можно ли бежать npm install за HTTP-прокси, который использует проверку подлинности NTLM? Если да, как я могу установить адрес и порт сервера, имя пользователя и пароль?

8 ответов

Решение

Я решил это следующим образом (ОС: 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".

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 :)

Другой альтернативой является использование Px для Windows, который говорит NTLM от вашего имени, например Cntlm и NTLMAps, без необходимости предоставлять свои учетные данные. Он использует учетные данные пользователя, вошедшего в систему через SSPI.

Ответ CNTLM работал для меня, но из-за ошибок подключения сделать npm непригодным для использования. Я исправил их, добавив этот заголовок в CNTML.

Header      Connection: close

Вместо запуска CNTLM, вы можете вместо этого попробовать запустить Fiddler, когда вам нужно использовать npm. Я обнаружил, что это работает в довольно закрытой среде (например, инвестиционные банки). Это также инструмент, с которым довольно легко составить экономическое обоснование (если нужно), поскольку он неоценим для проверки / создания / изменения HTTP-трафика.

Раньше мне приходилось идти по этому пути из-за использования аутентификации smartpass - то есть у нас фактически не было паролей. В этих местах установка CNTLM была бы невозможна.

Вы можете передать настройки в качестве параметров:

npm --proxy=http://username:password@proxyserver:port --proxy-https=http://username:password@proxyserver:port --registry=http://registry.npmjs.org/ install whateveryouwanttoinstall
  1. Открыть свой .npmrc файл в папке C:\users\username\ с помощью блокнота
  2. Добавьте следующие строки..
  3. Замените домен, имя пользователя, pwd, имя сервера на правильные значения
  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 не работал для меня. Я перепробовал все возможные комбинации. NPM выдавал ошибку аутентификации. Скрипач пришел на помощь и сэкономил мое время. Это легко установить и настроить. Установите для правила Fiddler значение "Автоматически проверено". В.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:

Второй способ заставить Fiddler выступать в качестве HTTP-прокси для NTLM и других протоколов - это оставить настройки по умолчанию для параметров / правил автоматической аутентификации и перейти к этой настройке из строки меню:

Сервис> Параметры Telerik Fiddler> вкладка Подключения

Установите флажок Разрешить удаленным компьютерам подключаться. Вы увидите диалог, объясняющий последствия включения этой опции. Перезапустите Fiddler и обновите файл .npmrc, как показано выше. Всякий раз, когда вам нужен npm для доступа к реестру, просто запустите Fiddler. Этот параметр не повлияет на работу Fiddler для других снимков.

CNTLM работал для меня, как предложено KOL. Спасибо KOL за это. Просто хотел добавить, что в отдельных прокси есть некоторые странности, из-за которых пароль может быть неприемлемым при использовании простого cntlm -H,

использование cntlm -I -M http://test.com и скопируйте приведенный ниже конфиг после стирания старых конфигов, и вы должны пройти.

Выход похож

---------------------------------------------------
Auth            NTLM
PassNT          8EE9B595A89F7D8774C2146FB302CBCF
PassLM          78901DA9889727EDE28EF9F2769485B9
----------------------------------------------------
Другие вопросы по тегам