如标题所示,我在设置用户密码时遇到了关于密码策略的问题,特别是密码历史记录限制。
场景是用户忘记当前密码时进行密码重置。我使用以下方式来完成这个过程:
这违反了除了密码历史记录限制以外的所有策略。
现在来看一个场景,当用户想要更改他们的密码并且知道他们的当前密码,我正在使用的是:
场景是用户忘记当前密码时进行密码重置。我使用以下方式来完成这个过程:
using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "XXXX", "ADMINUSER", "ADMINPASSWORD")) {
using (UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, username)) {
user.SetPassword(password);
}
}
这违反了除了密码历史记录限制以外的所有策略。
现在来看一个场景,当用户想要更改他们的密码并且知道他们的当前密码,我正在使用的是:
using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "XXXX.XXX.com")) {
using (UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, username)) {
user.ChangePassword(currentPassword, newPassword);
}
}
...这个功能运作正常,并符合所有密码策略限制。
有没有人遇到过这种情况?
谢谢 :)
UserPrincipal.SetPassword()
设置他们的密码。当密码不符合域的密码复杂性要求时,调用UserPrincipal.Save()
会抛出一个System.Runtime.InteropServices.COMException
异常,其中包含一个消息,指出“密码不符合密码策略要求。请检查最小密码长度、密码复杂度和密码历史记录要求。(HRESULT 异常: 0x800708C5)”。疯狂的是,账户仍然被创建了! - STLDev