c# – 以编程方式确定AD密码策略

我一直在使用System.DirectoryService(ADSI)类和方法来创建和更改Active Directory中的用户.

最近我们添加了一项功能,允许用户通过系统设置自己的密码.但是,如果密码策略集未接受密码,则使用SetPassword方法会引发异常.

userEntry.Invoke("SetPassword", new object[] {password});

我的问题是:在尝试使用SetPassword方法之前,如何检查密码是否符合密码策略?

我在this post中读到您可以从根域节点获取密码策略设置,但在哪里可以阅读有关每个属性的含义的更多信息?例如,需要哪些字符来填充“复杂性”政策?

一旦我知道这一点,我就可以实现自己的密码检查方法,但由于这是一种容易出错的方法,我宁愿使用内置检查,并向用户提供有关其密码错误的适当信息.

最佳答案 我在工作中正在做一个类似的项目.我们正在滚动忘记密码的应用程序.我最后只做了一个Invoke(“SetPassword”,“[randomString]”)并保存了Invoke的随机字符串(“ChangePassword”,“[randomString]”,“[用户提供的pw]”). ChangePassword的结果已返回给用户.

SetPassword不检查密码复杂性或历史规则.与在AD中右键单击用户并选择“重置密码”相同.但是,ChangePassword会检查密码历史记录要求.

点赞