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