首先我要声明,我不是域名管理专家。我是一名为网络编写自定义应用程序的程序员。
我公司想从我们的 Intranet 登录页面添加密码重置功能。我们的后端是 ColdFusion 9,它具有允许我以编程方式访问 LDAP 的语言功能。在研究编写代码以使此密码更改功能正常工作时,我发现编写执行以下操作的代码会容易得多:
net user <username> <password> /domain
当然,这是在进行所有常规旧密码检查等之后完成的。该命令以具有相应权限的用户身份执行,并且确实运行良好。
然而,我注意到一个问题,在与我们的一位服务器管理员进行多次故障排除后,我们已经能够独立于我编写的任何代码重现该问题。
问题是,一旦执行了 net user 命令,旧密码和新密码(在一段不确定的时间内)对于正在更改的用户帐户来说都是好的密码。
没错。如果我们有一个用户测试用户密码为欢迎然后我们运行以下命令:
net user testuser welcome2 /domain
然后,在一段不确定的时间内,我们能够使用“welcome”或“welcome2”作为密码成功登录域。现在,在这段不确定的时间间隔之后,第一个密码将停止工作,而新密码将是唯一剩下的有效密码。
如果我们直接在两个域控制器之一上运行该命令,则不会发生这种情况,但让我的 Web 应用程序直接在 PDC 上执行该命令并不可行。
我唯一能想到的是,存在传播时间,并且密码更改不是立即的,就像在 PDC 本身上运行一样。
所以,我想知道...这是预期的行为吗?如果我采用更困难的编程方式直接访问 LDAP 服务器并更改用户密码,是否可能会看到类似的传播问题?
谢谢阅读。
答案1
解决问题的好方法 - 编程登录 GUI。我想说的是,对于忘记密码的问题,有现成的解决方案,它们恰好位于指定的路径上。
系统管理存在路径号双向,当部门或工作组中指定的OU中的某个人或者在某些情况下单位负责人被授权更改该OU中的密码时。
您的路径很奇怪,因为在本地站的情况下,登录 GUI 中的系统消息和拦截密码只能通过键盘驱动程序进行更改,那么,就像您的情况下一样,不是很清楚密码保护和拒绝您的服务将如何直接影响整个企业。
在您做出决定时,您需要在每个域中更改密码,或者运行强制同步,这不是很好。也许不是工作站上的心情,哪个域是主工作站。这可以做到,它将首先使用特定的域控制器接收密码。
然后 agoritm 看起来会像这样 - 读取具有最高优先级的 ldap 服务器,查看工作站上的主 dns,通过控制器上的安全日志浏览以确定工作站接收密码的位置。之后,特定控制器可以更改密码。为了减少必要的权限,您可以创建用户并将其从用户组和域用户中删除,并授予在注册表的某些分支中只读的权限。要使用事件日志,最好使用中间数据库索引进行搜索立即可用,并授予非特权数据库用户的只读访问权限。
或者容忍15到0分钟的情况)。
使用 Windows PowerShell 自动化 Active Directory 迁移工具
基于示例脚本 Invoke-ADMTUserMigration.ps1 的 Active Directory 迁移工具中迁移单个用户的功能