Node.js Authentification NTLM HTTP, comment gérer les 3 types

D’accord, désolé si c’est une question stupide, mais j’essaie de faire en sorte que l’authentification NTLM fonctionne avec Node.js. J’ai lu ceci ( http://davenport.sourceforge.net/ntlm.html#theNtlmMessageHeaderLayout ). J’envoie l’en-tête et reçois un en-tête d’authentification Base64.

J’ai essayé de le convertir de Base64 en UTF8 en créant un nouveau tampon avec encodage en base64, puis en appelant toSsortingng('utf8') qui renvoie une chaîne similaire à

NTLMSSP\u0000\u0001\u0000\u0000\u0000\u0007�\b�\u0000

C’est là que j’ai besoin d’aide. Je comprends que NTLMSSP \ u0000 est la signature terminée par un zéro, mais c’est ce que le rest est censé indiquer, mais pour moi, ce n’est que de la foutaise. Ce sont des caractères Unicode, mais comment suis-je censé obtenir des données réelles à partir de cela? Je le convertis peut-être de manière incorrecte, ce qui peut append à mes problèmes, mais j’espère que quelqu’un pourra vous aider.

Consultez http://www.innovation.ch/personal/ronald/ntlm.html Ce que vous recevez est un message de type 2. Les pages l’expliquent de manière très pratique. Vous devez extraire le challenge serveur (nonce) et les drapeaux du serveur.

Je viens juste de mettre en place un module pour node.js: https://github.com/SamDecrock/node-http-ntlm

Avez-vous regardé NTLMAPS ?

Vous pourrez peut-être résoudre votre problème en l’utilisant comme serveur proxy, mais si vous souhaitez réellement implémenter l’authentification NTLM en Javascript, NTLMAPS fournit de nombreuses informations à étudier.

Sam a publié la meilleure ressource que j’ai vue pour comprendre ce qui se passe.

jclulow sur GitHub semble l’avoir implémenté dans une bibliothèque Samba qu’il a construite.

Jetez un coup d’oeil ici: https://github.com/jclulow/node-smbhash sous lib \ ntlm.js vous pouvez voir comment il a traité les réponses.

J’ai construit un client il y a quelques mois en utilisant javascript, ntlm.js. Peut-être que cela peut vous aider à vous entendre. Il était basé sur la documentation @ innovation.ch et la propre documentation officielle de Microsofts (voir les références sur la page github).