上周五写了一篇名为《深度剖析修改AD用户密码的数据同步机制》的文章,其中发现在修改了AD用户密码以后,5分钟之内,新旧密码同时可用的状况。
    今天微软GTSC的工程师换了两拨人做技术支持,在不断的尝试过程当中,找到了答案。
    在他们不断的给出解决办法的时候,其中提供了一篇KB号为906305的文章。链接如下:
    http://support.microsoft.com/kb/906305/en-us
    根据KB中大致描述了问题的状况和原因,虽然这篇KB是适用于WinSrv03的,但是现在证明,在WinSrv08上同样适用。
    详细情况,大家可以看KB文章(建议看英文原版,中文自动翻译简直就不是人话,机器就是机器),下面谈谈我个人的想法。
    同上篇文章后面jrfly331兄所提到的一样。这个5分钟就是为了防止AD同步延时问题,防止DC数量比较多时,用户登录所在的站点内还没有成功的更新到密码的修改的情况。。这样,即使新密码没有生效,旧密码依然可用。其实上篇文章里的那个截图也显示出来了,我在一台海外的DC上修改密码,花了40秒钟才复制到中国的DC。所以,有些网络效率不高的情况下,是会发生密码同步需要一定时间的情况的。鉴于这样的考虑,我们的旧密码,就有启用了一种生存时间的概念,而这个生存时间,就是从密码修改一刻算起,5分钟整。而在WinSrv03中,这个时间为60分钟。
    那么这个问题的关键在哪里呢??就在NTLM。。
    NTLM是什么?NTLM是NT LAN Manager的缩写,它是 Windows NT 早期版本的标准安全协议之一,也是Windows Server系统三大安全验证协议之一,至今保留。它主要用于多种网络身份验证,包括AD验证,Exchange的POP3,IMAP,SMTP等等。此外,NTLM 还为没有加入到域中的计算机提供的身份验证协议,这也是为什么我们是用WS-*去调它的原因,因为第三方很多应用,跟AD是没有关系的。具体的身份验证机制和流程,如果大家有兴趣的话,可以google一下,或者在微软的知识库里找到,这里我就不多说。
    但需要提到的就一点,也是与这次碰到的问题紧密相关的一点。就是,在NTLM的验证过程中,一旦发生密码更改,它会将用户的dspswvalidate属性修改为ture,使得在一个生存时间内,旧密码依然可以通过NTLM的验证。而这个生存时间的值,在WinSrv03中,是60分钟。在WinSrv08中则变为5分钟,虽然5分钟这个,我现在还没有找到任何官方的明确说法,但至少从我的测试当中,能够确认这一点。
    值得注意的是,这个缓存,在LDAP验证方式中同样存在,但却不存在于kerberos验证方式中。换句话说,也就是我们最常见的使用Ctrl-Alt-Del的交互式方式登录到桌面系统是不会存在旧密码可用的情况的。今天测了一下,的确如此。
    这里,我也需要做一个检讨。我们在发现这个问题的时候,确实是使用的WS-*的方式进行登录的。因为我们用WS-*做了一个SSO的接口,用于其它的第三方系统能够统一使用AD作为唯一的身份验证机制。另外,我做测试的时候也为了方便,直接在WS-*上面加了一个查询。所以我就我没有使用交互式登陆来进行测试,因为那样还需要找个客户端,然后每次还得登进登出的,很麻烦。这也导致了在之前测试的时候没有能够及时发现两种方式验证在效果上存在的区别。
    不过现在,问题的原因总算是找到了,而且解决问题的办法也就在KB当中。
    值得我们思考的是,任何问题都不是表象的,如果希望避免问题再次出现,甚至希望能够控制问题的发生,我们就应该深究。
    当然,这次如果不是被逼,我也懒得去研究这些。人老了,钻不动了。。哎。。。

 

再度剖析AD账户新旧密码同时可用的问题相关推荐

  1. linux 内核 工作队列,Linux内核新旧工作队列机制的剖析和比较

    摘要:在中断驱动的程序设计中,工作队列是一种强有力的工具.但是在Linux2.6.35及其以前的内核版本中,每创建一个工作队列就创建与CPU数目相同的内核线程,耗费大量的内核资源:工作只能严格串行的处 ...

  2. phpthink验证旧密码_忘记MacBook密码解决方法

    其实相较于Windows,macOS整天哪哪都需要验证密码,更不容易忘,但这不是连MacBook AIr都有指纹识别了嘛,忘记密码的风险也就大了一些,了解一些技巧或多一手准备还是很有必要的. 和Win ...

  3. 新旧笔记本电脑怎么样转移数据?换电脑数据如何迁移

    新旧笔记本电脑怎么样转移数据?小编给大家推荐几个方法,来将旧电脑的数据迁移到新电脑. 方法一:通过互联网的方式,比如邮箱.QQ.微信发送,或者网盘上传再下载等,但这些方法适合不太大的文件数据. 方法二 ...

  4. itunes一直显示正在验证iphone恢复_换新iPhone了,四个方法轻松解决新旧iPhone的资料迁移...

    假如你有一部旧iPhone,又买了一部新iPhone,现在要把旧iPhone上的资料,迁移到新iPhone上去,该怎么办呢?教授给大家介绍4种简单实用的方法. 方法一:iCloud备份与还原 这个方法 ...

  5. 计算机如何取消用户账户控制面板,电脑控制面板里面的用户账户怎么取消密码?...

    优质回答 回答者:链记士多 开始-----〉控制面板-----〉性能和维护-----〉管理工具-----〉计算机管理-----〉本地用户和组------〉用户选择删除. 或者你以管理员的身份登入,如果 ...

  6. 常用正则表达式 新旧身份证合法性验证及相互转换算法

    关键字:正则表达式  模式匹配 Javascript 摘要:收集一些常用的正则表达式. 正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番.我将一些常用的表 ...

  7. 本地AD账户同步到Office 365(21V)Azure AD

    本地我的AD域位corp.cn,而我对外的域名访问时basehome.com.cn,我申请了一个试用版的Office 365的账号,管理员账号为zhangjs@basehome.partner.onm ...

  8. JAVA通过SSL证书创建MS AD账户及设置密码

    近期由于工作需要整理一下自动化的东西,因为公司去年上线了OA,所以公司的入职系统会提交用户的信息到IT部门,最早的做法是入职到了,IT部门收集用户信息在AD中创建对应的用户信息,所以为了提高管理员的工 ...

  9. 记一次AD域域管理员密码更改导致某系统群集管理器故障排查解决过程

    环境描述 某公司有一套系统,2台Windows2003系统,采用自带的群集管理器功能实现双机热备功能,正常情况下,服务器10.1.1.1承载中间件应用服务,服务器10.1.1.2承载数据库服务,仅当其 ...

最新文章

  1. unix系统编程小结(二)------文件和目录
  2. 每日一皮:项目开发停在了最后10%的效果...
  3. 怎么转换html文件为mp3,如何把音频转换成mp3_音频文件怎么转mp3格式-系统城
  4. 解决AttributeError: module ‘scipy.misc‘ has no attribute ‘imread‘报错问题
  5. 从更底层研究C\C++动态内存分配
  6. easyui edatagrid 触发编辑行回掉onEdit
  7. 【CF1204D】Kirk and a Binary String【结论题】【LIS】
  8. java 正则表达式的使用
  9. 使用Pytorch处理多维特征的输入
  10. unity vscode没有智能提示_GAMES101课程环境搭建(Win10+VSCode)
  11. dubbo之.xml配置文件报错
  12. 操作系统之计算机系统概述:4、操作系统的运行机制(内核态用户态、特权指令非特权指令、内核程序应用程序)
  13. 如何通过图片识别用的什么字体?
  14. Silverlight入门:第七部分 - 脱离浏览器的经验
  15. ios最新防越狱检测插件_-一份从零开始的iOS插件分享-
  16. Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发(转发同上)...
  17. .NET简谈反射(动态调用)
  18. 渗透测试漏流程(PTES)
  19. unity屏幕分辨率设置
  20. Android NDK开发(十三):JNI函数接口详解—线程相关

热门文章

  1. 【278】◀▶ Python 数学函数说明
  2. PropertyGrid自定义控件
  3. python的数字转汉字金额的不完善代码
  4. internet 协议入门
  5. C#复制数组的两种方式,以及效率比较
  6. 关于 Delphi 中流的使用(2) 用 TFileStream(文件流) 读写
  7. 《Python数据分析》2nd
  8. android activity之间传值
  9. Linux下date命令的修改时间问题
  10. 祝贺中国队夺得第十届苏迪曼杯冠军!