NTLM 网络安全认证编程实现(VC)

来源:互联网 发布:省烟尘排放数据 编辑:程序博客网 时间:2024/05/18 02:52

 

                                              NTLM 网络安全认证编程实现(VC)

                                                  深圳远客 (song_0962@sina.com)

   为什么你的基于TCP/IP的应用软件在开发调试时好好的,到了用户手上就有的就不行?原因是你的应用软件没法通过NTLM 认证。

  NTLM 是基于WindowNT 操作系统的网络安全认证管理机制的一种协议。随着网络资源的互访共享,网络安全问题被MS操作系统当作一项重要的任务在日溢加强,从早期的LM认证到NTLM 再到NTLMV2,NTLM网络安全认证也让网络访问的安全有最强的保障,于是很多公司,大企业都会采用基于NTLM 认证的服务器加强内部系统资源互访的安全。非法用户很难在非受权情况下进入系统,也不能访问外部资,比较流行的HTTP 代理服器就是应用广泛的例子 ,如果你公司网络管理员设置了代理服务器,那么你的任何网络访问都要经过代理服务器NTLM认证,当然在IExploer 中经过简单的设置你就可以上网了,因为IExploer内部也经有集成了NTLM模块(NT操作系统中都有NTLM模块)。
虽然 NTLM网络安全认证管理机制能保证网络安全,但给很多的应用软件访问网络资源带来了麻烦。因为,你的应用软件要合法访问就得先通过NTLM的把关,象下载软件,聊天软件,网络游戏,网络监制,Mail管理软件,WEB应用软件等,如果说是一个优秀的软件,都必须要能够实现这种功能。因些在本文中,我将给大家介绍如用C++代码实现NTLM认证。
一、NTLM认证过程
NTLM认证分3个步骤:
 
a.第一步是协商过程,由Client发起,主要任务是Client 通知Server ,Client要进行认证,并告诉Server 是采用何种认证方式NTLM 、LM 或NTLMV2以及其它相关的信息(主要有:字符格式、Client的操作系统等,详见NTLM通讯协议)。Server   收到Client发出的协商内容后会按照本次协商作出回应。
 
b.第二步是Server按照上步Client要求作出回应,在回应的信息中会给出8字节的挑战(chellange )信息。挑战信息是给Client的用来作第三步认证回应Server用的。
 
c. 第三步是Client 用挑战信息经过严格加密算法,来回应Server的挑战。如果Server认为你挑战成功,就在一切OK。
 
 
这三个过程没有哪步不重要,步步关键,稍有不慎,前功尽弃!
                            
 
下面我会从NTLM协议着手,从3个过程详细来实现。
(待继续。。。。)