在 Active Directory 中,您可以设置并强制执行规则,其中用户必须使用强密码,不能使用他们已有的最后 5 个以上密码,强制执行密码复杂性。有没有办法强制执行此类设置,以便如果服务帐户(密码重置 Web 服务)尝试为用户设置新密码,它会根据策略进行检查并被接受或拒绝?
似乎由于服务帐户强制更改密码,用户可以通过 Web 界面输入相同的密码,并不断使用相同的密码。由于这是服务帐户为他更改密码,因此不会根据上次已知的密码进行检查,因此不会强制执行密码规则
虽然程序员可以编写复杂性检查代码,但是无法在 Web 界面上检查最后使用的密码,因为 Web 服务不知道最后使用的密码。
是否可以强制执行,以便服务帐户的密码更改也像普通用户密码更改一样受到限制?
答案1
在 AD 中,有两种操作可以更改用户密码 -改变,它可以匿名执行,因为它需要旧密码作为请求的一部分,并且重置,这不需要旧密码,并且必须由具有访问权限的用户执行才能重置目标帐户的密码。
在这种情况下,软件应用程序正在执行重置操作,虽然不知道用户的旧密码,但被验证为具有所需权限的服务帐户。
从 AD 的角度来看,密码正在进行管理重置;在这种情况下,密码历史记录永远不会被强制执行,因为执行重置的管理员不应该知道用户的旧密码 - 如果他们习惯将新密码设置为,比如说,Thursday1
在重置操作中不符合策略会相当令人困惑。
虽然用户体验很差,但我能想到的处理此问题的最佳机制是让 Web 应用程序重置密码(可能是他们没有输入的密码,而是刚刚生成的密码),然后在帐户上设置“下次登录时必须更改密码”标志,强制用户立即执行密码更改操作,这将强制历史记录。
有一些关于在 .Net 中使用 LDAP API 来实现在这种重置中强制执行历史记录的目标的讨论这里,但我不确定这是否会成为您的一个选项,具体取决于您所使用的应用程序;如果您控制代码并且您使用的 LDAP 库支持控件,那么它应该是可行的。