gpt4 book ai didi

c# - DirectoryServices UserPrincipal.SetPassword 忽略密码策略(密码历史)

转载 作者:行者123 更新时间:2023-11-30 15:33:30 26 4
gpt4 key购买 nike

如标题所示,我在设置用户密码时遇到了关于遵守密码策略的问题,特别是密码历史限制。

当用户不知道他的当前密码时,场景是用户密码重置。我正在使用以下内容来完成此操作:

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);
}
}

...按预期工作,并根据所有密码策略限制进行验证。

有人遇到过这个问题吗?

干杯:)

最佳答案

据我所用,这是设计使然。 SetPassword 旨在充当重置用户密码的管理员 - 复杂性策略成立但对历史没有限制。假设管理员重置了您的密码,看到“无法设置相同的密码”- 您的一个密码已泄露。

我们的解决方法是允许管理层仅通过我们的一个网络子系统并保留哈希的历史记录,以便验证历史记录的责任由自定义子系统而非广告承担。

关于c# - DirectoryServices UserPrincipal.SetPassword 忽略密码策略(密码历史),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17493571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com