好的,对不起,如果这是一个愚蠢的问题,但我正在尝试使用Node.js进行NTLM身份验证。我一直在读这篇文章(http://davenport.sourceforge.net/ntlm.html#theNtlmMessageHeaderLayout)。我发送标头并获得Base64身份验证标头。
我尝试通过创建一个带有base64编码的新缓冲区然后调用toString('utf8')
来返回一个类似
NTLMSSP\u0000\u0001\u0000\u0000\u0000\u0007�\b�\u0000
这是我需要帮助的地方。我理解NTLMSSP \ u0000是空终止签名,但其余的假设表示什么,但对我来说它只是垃圾。它是unicode字符,但我怎么能从中得到实际数据呢?我可能会错误地转换它,这可能会增加我的麻烦,但我希望有人可以提供帮助。
答案 0 :(得分:4)
看看http://www.innovation.ch/personal/ronald/ntlm.html 您收到的是Type-2消息。这些页面以非常实用的方式解释了它。您必须提取服务器质询(nonce)和服务器标志。
我刚刚为node.js实现了一个模块:https://github.com/SamDecrock/node-http-ntlm
答案 1 :(得分:2)
你看过NTLMAPS吗?
您可以通过将其用作代理服务器来解决您的问题,但如果您真的想在Javascript中实现NTLM身份验证,那么NTLMAPS会提供大量有效的代码来学习。
答案 2 :(得分:2)
Sam发布了我见过的最好的资源,用于了解正在发生的事情。
Jclulow在GitHub上似乎已经在他建立的Samba库中实现了它。
看看这里: https://github.com/jclulow/node-smbhash 在lib \ ntlm.js下,您可以看到他是如何处理回复的。
答案 3 :(得分:1)
我几个月前使用javascript ntlm.js构建了客户端。也许这可以帮助你相处。它基于文档@ innovation.ch和Microsofts自己的官方文档(参见github页面上的参考资料)。