如何在.Net中创建Ntlm Type 1和Type 3消息

brj*_*011 9 c# network-programming

我需要为NTLM握手创建Type 1消息和Type 3消息.这有什么.Net API吗?

本质上,应用程序是基于WPF的,但Socket用于从服务器流式传输数据.使用套接字是技术要求,但问题是当用户需要使用代理服务器连接到服务器时.此外,如果代理授权基于Ntlm,则客户端应用程序需要创建类型1和类型3消息以便与代理服务器握手.

我的问题是:.NET库中是否有可用于创建这些不同类型的NTLM消息的API?任何帮助或替代方案将不胜感激.提前致谢.

Ale*_*der 4

如果您仅限于套接字,则必须手动实现整个 NTLM 身份验证协议。Microsoft 在 secur32.dll 中有一个安全支持提供程序接口 (SSPI)来实现各种安全协议,您可以通过 PInvoke 重用那里的一些 API 函数(这里也提供某种 .net 包装器)。

以下是NTLM 身份验证协议的描述,API 示例位于NTLMSSP 和 SSPI部分。基本上,整个身份验证方案是围绕使用不同参数调用AcquireCredentialsHandle / InitializeSecurityContext而演变的。这将为您提供原始字节格式的 type1/type3 ntlm 消息,您必须通过套接字发送/接收这些消息。