怎么实现通过设置httprequest的head 进行NTLM验证
我知道C#里直接调用Credentials就可以通过NTLM认证,我现在急切想知道怎么通过设置httprequest的header来实现NTLM验证。因为有另外一种语言只提供httprequst和一些加密算法,我要用这种语言实现NTLM认证。 --------------------编程问答-------------------- System.Net.CredentialCache MyCredentialCache = new System.Net.CredentialCache();MyCredentialCache.Add(new System.Uri(""), "NTLM", new System.Net.NetworkCredential("", "", ""));
System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("");
req.Method = "GET";
req.KeepAlive = true;
req.Credentials = MyCredentialCache; --------------------编程问答-------------------- 关注中 --------------------编程问答-------------------- 1、客户端首先在本地加密当前用户的密码成为密码散列
2、客户端向服务器发送自己的帐号,这个帐号是没有经过加密的,明文直接传输
3、服务器产生一个16位的随机数字发送给客户端,作为一个 challenge(挑战)
4、客户端再用加密后的密码散列来加密这个 challenge ,然后把这个返回给服务器。作为 response(响应)
5、服务器把用户名、给客户端的challenge 、客户端返回的 response 这三个东西,发送域控制器
6、域控制器用这个用户名在 SAM密码管理库中找到这个用户的密码散列,然后使用这个密码散列来加密 challenge。
7、域控制器比较两次加密的 challenge ,如果一样,那么认证成功。
知道过程
那么首先要把账号明文发送过去
然后获得16随机数字
在本地加密自己密码形成的散列来加密这个challenge 发过去
。。。
补充:.NET技术 , C#