什么是NTLM
=============
Windows Challenge/Response (NTLM) 是用在包括着Windows操作系统的网络中的一种认证(authentication)协议, 也用在stand-alone系统上.
在网络环境中, Microsoft Kerberos 比NTLM添加了更多的安全性. 尽管Microsoft Kerberos 是一个不错的选择, NTLM现在还是被支持的. NTLM必须被使用在stand-alone的系统上, 用来做登录的认证.
NTML的credential是基于在交互登录过程中维护的数据上的, 这里的数据包括域名, 用户名, 还有一个用户密码的单向hash串. NTML使用加密的challenge/response 协议来认证一个用户, 用户的密码不会被在线路上传输. 取明文密码而代之的是, 系统会执行一个计算, 通过这个计算证明他已经访问到了安全的NTLM credentials.
网路上的交互式NTLM认证典型地涉及到两个系统: 一个客户端系统, 在这个系统上, 用户请求认证; 一个域控制器, 其中存放着用户的密码.
非交互式的认证里, 其中一个已经登录了的用户要访问一个资源(比如说服务器应用程序), 这里典型地会涉及到三个系统: 一个客户端, 一个服务器, 和一个域控制器. 域控制器会代替服务器进行authentication的计算.
NTLM的详细过程
==============
下面的步骤展现了一个NTLM非交互式的认证过程. 第一步, 用户提供NTLM credential, 这仅属于非交互式authentication过程的部分.
服务器发送下面的三项数据给域控制器:
你的应用程不能直接访问NTLM security package, 取而代之的是, 它应该使用Negotiate security package. 如果authentication涉及到的操作系统允许的话, Negotiate 允许你的应用程序来使用高级security protocols的优势. 当前, Negotiate security package 的选择包括Kerberos 和NTLM两种. Negotiate 会选择Kerberos, 除非Kerberos不被牵扯到authentication的操作系统支持.
译自:
Microsoft NTLM
http://msdn.microsoft.com/en-us/library/aa378749(VS.85).aspx