我在 OpenLDAP 2.4.23 中实现了密码策略覆盖。我也在使用check_password.so
它passwordCheckModule
。它对于单个用户来说工作得很好,但问题是它cn=admin,dc=example,dc=com
能够更改任何用户的密码而无需检查 check_password.so。管理员可以设置任何密码。
任何人如果对此有任何想法,请分享。我们将非常感激。
答案1
这是设计使然,无法更改。
引用slapo-ppolicy(5)
:
Note that some of the policies do not take effect when the operation is
performed with the rootdn identity; all the operations, when performed
with any other identity, may be subjected to constraints, like access
control.
答案2
SvenW 的回答是正确的,但不仅仅如此。
在密码更改时执行任何类型的密码验证或操作的模块通常只能在使用密码修改 EXOP 时工作。执行密码修改 EXOP(扩展操作)时,纯文本密码将提供给 OpenLDAP,OpenLDAP 负责对其进行哈希/加密并存储该加密值。因此,OpenLDAP 知道密码的真实内容。
现在,当管理员去更改密码时,它不会使用密码修改 EXOP,而是直接设置加密值。因此,OpenLDAP 永远不知道未加密的密码是什么,因此无法对其进行任何类型的检查。