web-dev-qa-db-fra.com

NPM derrière le proxy NTLM

Est-il possible d'exécuter npm install derrière un proxy HTTP qui utilise NTLM authentication Si oui, comment puis-je définir l'adresse et le port du serveur, le nom d'utilisateur et le mot de passe?

64
kol

Je l'ai résolu de cette façon (OS: Windows XP SP3):

1. Téléchargez CNTLM installer et exécutez-le. 

2. Trouvez et remplissez ces champs dans cntlm.ini. Ne remplissez pas le champ Password, ce n'est jamais une bonne idée de stocker des mots de passe non cryptés dans des fichiers texte.

Username    YOUR_USERNAME
Domain      YOUR_DOMAIN
Proxy       YOUR_PROXY_IP:PORT
Listen      53128

3. Ouvrez la console et tapez ces commandes pour générer des hachages de mots de passe.

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

4. Copiez les trois lignes ci-dessus dans cntlm.ini, sous la ligne du champ Domain. Encore une fois, ne remplissez pas le champ Password. Save cntlm.ini.

5. Ouvrez le gestionnaire de service (à partir de la ligne de commande: services.msc) et démarrez le service appelé "proxy d'authentification CNTLM".

6. Dans la console, tapez ces lignes:

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

7. Maintenant, npm view, npm install, etc. devrait fonctionner. Exemple:

> npm view qunit
...Nice answer, no errors :)
124
kol

La réponse de CNTLM fonctionnait pour moi, mais avec des erreurs de connexion, rend npm inutilisable Je les ai corrigés en ajoutant cet en-tête dans CNTML.

Header      Connection: close
10
Toilal

Une autre alternative consiste à utiliser Px pour Windows qui parle NTLM en votre nom, comme Cntlm et NTLMAps, sans avoir à fournir vos informations d'identification. Il utilise les informations d'identification de l'utilisateur connecté via SSPI.

8
genotrance

Plutôt que d’exécuter CNTLM, vous pouvez essayer d’exécuter Fiddler lorsque vous devez utiliser npm. J'ai trouvé que cela fonctionne dans des environnements assez verrouillés (par exemple, les banques d'investissement). C'est aussi un outil assez facile à analyser (si vous en avez besoin), car il est très utile pour vérifier/créer/modifier le trafic HTTP.

J'ai déjà dû emprunter cette voie en raison de l'utilisation de l'authentification Smartpass - c'est-à-dire que nous n'avions pas de mot de passe. Il aurait été impossible de créer CNTLM sur ces sites.

7
adhocgeek

Vous pouvez passer les paramètres en tant que paramètres:

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

CNTLM n'a pas fonctionné pour moi. J'ai essayé toutes les combinaisons possibles. NPM donnait une erreur d'authentification. Le violoneux est venu au secours et m'a fait gagner du temps. Il est facile à installer et à configurer. Définissez la règle Fiddler sur Authentifié automatiquement. Dans .npmrc, définissez ces paramètres.

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

Cela a fonctionné pour moi :)

Une autre option Fiddler:

Un autre moyen de faire de Fiddler un proxy HTTP pour NTLM et d’autres protocoles consiste à conserver les valeurs par défaut des options/règles d’authentification automatique et à accéder à ce paramètre à partir de la barre de menus:

Outils> Options Fiddler Telerik> onglet Connexions

Cliquez sur la case à cocher Autoriser les ordinateurs distants à se connecter. Vous verrez une boîte de dialogue expliquant les conséquences de l'activation de cette option. Redémarrez Fiddler et mettez à jour le fichier .npmrc comme indiqué ci-dessus. Chaque fois que vous avez besoin de npm pour accéder au site de registre, lancez Fiddler. Ce paramètre n'affectera pas la façon dont Fiddler s'exécute pour d'autres captures.

4
Rakesh Sharma
  1. Ouvrez votre fichier .npmrc dans le dossier C:\utilisateurs\nom d'utilisateur\à l'aide du bloc-notes.
  2. Ajouter les lignes ci-dessous .. 
  3. Remplacez le domaine, nom d'utilisateur, pwd, nom_serveur par vos valeurs correctes
  4. Essayez d'installer ou d'obtenir des paquets maintenant
  5. Si vous essayez de Vs2017, fermez et rouvrez VS IDE, alors seulement cela fonctionnera

    proxy=http://DOMAIN%5CUSERNAME:[email protected]:6050   
    https-proxy=http://DOMAIN%5CUSERNAME:[email protected]:6050  
    http-proxy=http://DOMAIN%5CUSERNAME:[email protected]:6050   
    strict-ssl=false
    
3
Sundara Prabu

CNTLM a travaillé pour moi comme suggéré par KOL. Merci KOL pour cela. Je voulais juste ajouter qu'il existe certaines bizarreries dans les mandataires individuels, à cause desquelles le mot de passe peut ne pas être acceptable lors de l'utilisation du simple cntlm -H.

Utilisez cntlm -I -M http://test.com et copiez la configuration ci-dessous après avoir effacé les configurations les plus anciennes.

La sortie est comme 

---------------------------------------------------
Auth            NTLM
PassNT          8EE9B595A89F7D8774C2146FB302CBCF
PassLM          78901DA9889727EDE28EF9F2769485B9
----------------------------------------------------
0
kausik sen