nok*_*nal 4 c# asp.net directoryservices active-directory
正如标题所暗示的,我在设置用户密码时遇到了关于尊重密码策略的问题,特别是密码历史限制。
该场景是用户密码重置,当用户不知道其当前密码时。我正在使用以下方法来完成此操作:
using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "XXXX", "ADMINUSER", "ADMINPASSWORD")) {
using (UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, username)) {
user.SetPassword(password);
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于每项策略减去密码历史限制。
现在考虑这个场景,当用户想要更改他们的密码并且知道他们当前使用的密码时:
using (PrincipalContext context = new PrincipalContext(ContextType.Domain, "XXXX.XXX.com")) {
using (UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, username)) {
user.ChangePassword(currentPassword, newPassword);
}
}
Run Code Online (Sandbox Code Playgroud)
...按预期工作,并根据所有密码策略限制进行验证。
有没有人处理过这个问题?
干杯:)
就我使用过的而言,这是设计使然。SetPassword 旨在充当重置用户密码的管理员 - 复杂性策略成立,但对历史记录没有限制。假设管理员重置您的密码,看到“无法设置相同的密码” - 您的密码之一被泄露。
我们的解决方法是允许管理人员仅通过我们的一个 Web 子系统并保留哈希的历史记录,以便验证历史记录的责任放在自定义子系统而不是广告上。
| 归档时间: |
|
| 查看次数: |
8094 次 |
| 最近记录: |