我已经遇到这个问题好几天了,首先我想说这是我第一次使用 ldap。因此,在对错误进行一些调试后,我发现失败(随后被忽略)的进程之一是运行 ldapadd 命令来添加 local_scheme。经过研究,我发现问题出在密码策略上,现在我遇到了瓶颈。
即使我知道这个命令在 openldap 2.4 上工作正常,但在 openldap 2.6 上却不行。我将在这里保留 pwdpolicy 以及 ldap add 命令调用的错误。pwdPolicy:
dn: cn=pwdDefaultPolicy,ou=Policies,dc=local
objectClass: pwdPolicy
objectClass: top
objectClass: person
cn: pwdDefaultPolicy
sn: pwdDefaultPolicy
pwdAttribute: userPassword
pwdCheckQuality: 1
pwdMinAge: 0
pwdMaxAge: 0
pwdMinLength: 8
pwdInHistory: 2
pwdMaxFailure: 3
pwdFailureCountInterval: 0
pwdLockout: FALSE
pwdLockoutDuration: 0
pwdAllowUserChange: TRUE
pwdExpireWarning: 0
pwdGraceAuthNLimit: 0
pwdMustChange: FALSE
pwdSafeModify: FALSE
返回错误:
ldap_add: Invalid syntax (21)
additional info: objectClass: value #0 invalid per syntax
提前感谢大家!
编辑:我想补充一下,我尝试过单独删除每个 objectClass,甚至全部删除。但结果并没有什么成效。
答案1
您的 OpenLDAP 服务配置需要ppolicy
加载覆盖模块。
在 OpenLDAP 2.4 中,密码策略属性和相应的对象类是在静态加载的模式(ppolicy.schema)中定义的,这意味着只要模式定义到位,就可以独立于模块创建 pwdPolicy 条目(尽管如果没有模块,它们将仍然不起作用)。
OpenLDAP 2.5已移动将模式定义放入覆盖模块本身(这是 OpenLDAP 模块的典型做法)并删除 ppolicy.schema。要让您的条目被接受,您现在必须加载 ppolicy,以便它能够提供“pwdPolicy”对象类的必要定义。