在密码重置时使用 ldaptive 强制执行 Active Directory 密码历史策略
Posted
技术标签:
【中文标题】在密码重置时使用 ldaptive 强制执行 Active Directory 密码历史策略【英文标题】:Enforce Active Directory password history policy using ldaptive on password reset 【发布时间】:2018-03-28 11:28:09 【问题描述】:我正在使用 Java ldaptive 库通过 LDAP 协议与 Active Directory 进行通信。 我的问题如下: 我需要有密码重置功能,尊重密码历史和复杂性要求,但忽略密码最低年龄规则。 我使用管理员帐户执行密码重置:
modifyRequest = new ModifyRequest(userLdapEntry.getDn(),
new AttributeModification(
AttributeModificationType.REPLACE,
new UnicodePwdAttribute(password)));
modifyRequest.setControls(new LdapPolicyHintsControl(getADPolicyHintsEnforceFlag(), false));
new ModifyOperation(connection).execute(modifyRequest);
添加的控件在 Microsoft 网站上记录为强制执行密码历史记录要求的控件link
但是,正如 this answer 中所建议的,它还强制执行最低密码期限规则,这违反了文档。
知道如何让它按照文档中的描述工作吗?
【问题讨论】:
【参考方案1】:文档有误。你将无法让它像那样工作。最低密码年龄规则将得到遵守,您不能通过代码覆盖它。
请注意,在 Active Directory 中,与典型的 LDAP 服务器不同,它不会像您想象的那样强制执行密码策略。密码策略由组策略管理并在 Windows 中强制执行,特别是由 Windows LSASS.exe 进程。
由于您通过组策略配置密码策略。这些设置直接写入域控制器上的安全配置单元。这是 LSASS 从中读取它们的地方。只有当您直接从 ADUC 更改密码时,这些设置才会被覆盖。
除了 AD 工具,您还必须编写一个在 LSASS 进程中运行的密码过滤器 .dll:
自定义密码过滤器 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 现场工程师向我提供了此信息。
【讨论】:
以上是关于在密码重置时使用 ldaptive 强制执行 Active Directory 密码历史策略的主要内容,如果未能解决你的问题,请参考以下文章
戴尔 R710 IDRAC6 怎么使用Windows重置密码