使用密码重置的LDAPTIVE强制执行Active Directory密码历史记录策略



我正在使用Java Ldaptive库通过LDAP协议与Active Directory通信。我的问题如下:我需要具有密码重置功能,尊重密码历史记录和复杂性要求,但忽略了最小密码年龄规则。我使用Admin帐户执行密码重置:

modifyRequest = new ModifyRequest(userLdapEntry.getDn(),
                new AttributeModification(
                        AttributeModificationType.REPLACE,
                        new UnicodePwdAttribute(password)));
        modifyRequest.setControls(new LdapPolicyHintsControl(getADPolicyHintsEnforceFlag(), false));
        new ModifyOperation(connection).execute(modifyRequest);

在Microsoft网站上记录了添加的控件作为控制密码历史要求链接

但是,如本答案所建议的那样,它也执行最低密码年龄规则,这是针对文档的。

任何想法如何使其如文档中所述工作?

文档是错误的。您将无法这样工作。最低密码年龄规则将受到尊重,您不能通过代码覆盖它。

请注意,在Active Directory中,与典型的LDAP服务器不同,它不会像您认为那样执行密码策略。密码策略由组策略管理,并在Windows中执行,尤其是Windows lsass.exe进程。

由于您通过组策略配置密码策略。这些设置直接写给域控制器上的安全架。这是LSAS从中读取它们的地方。这些设置唯一被覆盖的是直接从ADUC更改密码时。

广告工具以外,您必须编写一个密码过滤器.dll,该ever .dll在LSASS过程中运行:

自定义密码过滤器https://blogs.technet.microsoft.com/tristank/2005/07/18/custom-password-filters/

密码过滤器https://msdn.microsoft.com/en-us/library/windows/desktop/ms721882(v = vs.85(.aspx

当我提出这个问题时,Microsoft PSS现场工程师给了我这些信息。

最新更新