[转]NTLM身份验证

链接:http://www.360doc.com/content/12/0615/14/10216164_218320534.shtml

在允许的环境下,Kerberos是首选的认证方式。在这之前,Windows主要采用另一种认证协议——NTLM(NT Lan Manager)。NTLM使用在Windows NT和Windows 2000 Server(or later)工作组环境中(Kerberos用在域模式下)。在AD域环境中,如果需要认证Windows NT系统,也必须采用NTLM。较之Kerberos,基于NTLM的认证过程要简单很多。NTLM采用一种质询/应答(Challenge/Response)消息交换模式,右图反映了Windows2000下整个NTLM认证流程。

步骤一

用户通过输入Windows帐号和密码登录客户端主机。在登录之前,客户端会缓存输入密码的哈希值,原始密码会被丢弃(“原始密码在任何情况下都不能被缓存”,这是一条基本的安全准则)。成功登录客户端Windows的用户如果试图访问服务器资源,需要向对方发送一个请求。该请求中包含一个以明文表示的用户名。

步骤二

服务器接收到请求后,生成一个16位的随机数。这个随机数被称为Challenge或者Nonce。服务器在将该Challenge发送给客户端之前,该Challenge会先被保存起来。Challenge是以明文的形式发送的。

步骤三

客户端在接收到服务器发回的Challenge后,用在步骤一中保存的密码哈希值对其加密,然后再将加密后的Challenge发送给服务器。

步骤四

服务器接收到客户端发送回来的加密后的Challenge后,会向DC(Domain)发送针对客户端的验证请求。该请求主要包含以下三方面的内容:客户端用户名;客户端密码哈希值加密的Challenge和原始的Challenge。

步骤五、六

DC根据用户名获取该帐号的密码哈希值,对原始的Challenge进行加密。如果加密后的Challenge和服务器发送的一致,则意味着用户拥有正确的密码,验证通过,否则验证失败。DC将验证结果发给服务器,并最终反馈给客户端。

时间: 2024-10-07 21:14:07

[转]NTLM身份验证的相关文章

[翻译] API测试最佳实践 - 身份验证(Authentication)

API测试最佳实践 - 身份验证 适用等级:高级 1. 概况 身份验证通常被定义为是对某个资源的身份的确认的活动,这里面资源的身份指代的是API的消费者(或者说是调用者).一旦一个用户的身份验证通过了,他将被授权访问那些期待访问的资源或API. 验证(Authentication)- 指的是对API最终使用者的确认的活动. 授权(Authorization)- 指对那些验证通过的用户能所能够访问的资源进行确认的活动. 2. 身份验证的标准(Authentication Standars) 身份验

IIS 身份验证

IIS 支持以下身份验证模式: 匿名.如果不需要对客户端进行身份验证(或者使用自定义身份验证机制,如窗体身份验证),则可将 IIS 配置为允许匿名访问.在该事件中,IIS 创建一个 Windows 令牌来表示具有相同匿名(或客人)帐户的所有匿名用户.默认的匿名帐户是 IUSR_MACHINENAME,其中 MACHINENAME 是安装期间指定的计算机的 NetBIOS 名称. 基本.基本身份验证要求用户以用户名和密码的形式提供凭据来证明他们的身份.基本身份验证基于 Internet 标准 RF

API测试最佳实践 - 身份验证

适用等级:高级 1. 概况 身份验证通常被定义为是对某个资源的身份的确认的活动,这里面资源的身份指代的是API的消费者(或者说是调用者).一旦一个用户的身份验证通过了,他将被授权访问那些期待访问的资源或API. 验证(Authentication)- 指的是对API最终使用者的确认的活动. 授权(Authorization)- 指对那些验证通过的用户能所能够访问的资源进行确认的活动. 2. 身份验证的标准(Authentication Standars) 身份验证的标准和技术太多了,比如, 2.

Android 与 IIS服务器身份验证

1)基础验证: 1 /** 2 * 从服务器取图片 3 * 4 * @param url 5 * @return 6 */ 7 public void getHttpBitmap(final String url) { 8 new Thread(new Runnable() { 9 public void run() { 10 Bitmap bitmap = null; 11 try { 12 HttpGet httpPost = new HttpGet(url); 13 DefaultHttp

HTTP 请求未经客户端身份验证方案“Anonymous”授权。从服务器收到的身份验证标头为“Negotiate,NTLM”

转自:http://www.cnblogs.com/geqinggao/p/3270499.html 近来项目需要Web Service验证授权,一般有两种解决方案: 1.通过通过SOAP Header身份验证. 2.通过集成windows身份验证. 今天我就尝试了已第二种方式进行授权,首先发布Web Service到IIS,然后选择身份验证,启用Windows身份验证,禁用匿名身份验证 发布好了Web Servive就要在Client端调用了,我用的是VS2008,在client端项目引用中右

使用NTLM的windows身份验证的nginx反向代理

一次项目中使用开源nginx反向代理NTLM的windows身份验证出现反复登陆框,最终分析属于keepalive 在NTLM认证过程中发生变化导致. 据此,将nginx.conf 配置修改如下 worker_processes auto; worker_rlimit_nofile 65535; events { worker_connections 65535; } http { include mime.types; default_type application/octet-stream

关于WEB Service&WCF&WebApi实现身份验证之WCF篇(1)

WCF身份验证一般常见的方式有:自定义用户名及密码验证.X509证书验证.ASP.NET成员资格(membership)验证.SOAP Header验证.Windows集成验证.WCF身份验证服务(AuthenticationService),这些验证方式其实网上都有相关的介绍文章,我这里算是一个总结吧,顺便对于一些注意细节进行说明,以便大家能更好的掌握这些知识. 第一种:自定义用户名及密码验证(需要借助X509证书) 由于该验证需要借助于X509证书,所以我们需要先创建一个证书,可以利用MS自

与身份验证HTTP服务器通信(Communicating with Authenticating HTTP Servers)

本文描述了如何利用CFHTTPAuthentication API与需要身份验证的HTTP服务器通信.它解释了如何找到匹配的验证对象和证书,并将它们应用到HTTP请求,然后存储以供以后使用. 一般来说,如果一个HTTP服务器返回一个401或407响应你的HTTP请求,这表明服务器进行身份验证需要证书.在CFHTTPAuthentication API中,每个证书组存储在CFHTTPAuthentication 对象中.因此,每个不同的身份认证服务器和每个不同用户连接的服务器需要一个单独的CFHT

「深入 Exchange 2013」02 CAS的身份验证方法

在上一篇咱们聊了一下CAS的架构,这一章就来聊聊CAS的验证方法 很多管理员从未纠结过客户端的验证问题,因为Exchange的默认设置在单一环境中完全够用了.当拓扑变得更复杂,环境中开始出现一些其他版本的Exchange时候,就得重视起这个玩意. 选择验证方法的重要性在于,其他的服务器都指望着着CAS角色发送过来的请求符合特定的验证方法.如果用户的邮箱处于Exchange2013的MBX上,那么CAS可以直接将请求代理给HTTP代理终结点,如果处于Exchange2007的或者是Exchange