相关疑难解决方法(0)

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

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

该场景是用户密码重置,当用户不知道其当前密码时。我正在使用以下方法来完成此操作:

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)

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

有没有人处理过这个问题?

干杯:)

c# asp.net directoryservices active-directory

4
推荐指数
1
解决办法
8094
查看次数

如何使用System.DirectoryServices.Protocols更改密码

我们的用户存储是名为eDirectory的LDAP服务器.如何使用System.DirectoryServices.Protocols更改用户密码?

.net c# directoryservices ldap edirectory

1
推荐指数
1
解决办法
8559
查看次数

UnauthorizedAccessException:更改AD密码时拒绝访问

我尝试为Server 2012中的更新域用户密码编写C#代码。我根据此堆栈溢出答案使用以下代码

using (var context = new PrincipalContext(ContextType.Domain, "test.com"))
{
    using (var user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, userName))
    {
        user.SetPassword(newPassword);
        //user.ChangePassword(oldPassword, newPassword);
        user.Save();
    }
}
Run Code Online (Sandbox Code Playgroud)

运行代码时获取以下异常

System.Reflection.TargetInvocationException:调用的目标引发了异常。--->
System.UnauthorizedAccessException:访问被拒绝。(来自HRESULT的异常:0x80070005(E_ACCESSDENIED))

我也禁用了密码策略。有什么建议吗?

c# active-directory

1
推荐指数
1
解决办法
1398
查看次数