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?
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 :)
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
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.
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.
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
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.
.npmrc
dans le dossier C:\utilisateurs\nom d'utilisateur\à l'aide du bloc-notes.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
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
----------------------------------------------------