我在Fedora Core 13中使用Openldap 2.4.11。
我正在尝试创建密码策略:
dn: cn=default,ou=policies,dc=estream,dc=com,dc=my
objectClass: person
objectClass: pwdPolicy
objectClass: top
cn: default
pwdAttribute: 2.5.4.35
sn: test
如果我将pwdAttriute指定为“userPassword”,则会出现错误
LDAP: error code 21 - pwdAttribute: value #0 invalid per syntax
相反,我强制将OID用于pwdAttribute:
pwdAttribute: 2.5.4.35
pwdAttribute可以使用“userPassword”代替“2.5.4.35”吗?
我尝试将openldap配置为在cn = config中加载模块ppolicy.la,但在重启slapd服务几次后它似乎也没有工作:
dn: cn=module{0},cn=config
objectClass: olcConfig
objectClass: olcModuleList
objectClass: top
cn: module{0}
olcModuleLoad: {0}/usr/lib64/openldap/ppolicy.la
答案 0 :(得分:6)
相反,我强制将OID用于pwdAttribute:
如果相关架构和ppolicy
叠加层都已加载,您可以指定OID或属性名称。
为什么你有objectClass = person?密码策略不是一个人。习惯上使用objectClass = device作为密码策略的结构类。
答案 1 :(得分:6)
我收到了运行openldap 2.4.29的相同错误消息。密码策略覆盖允许使用pwdAttribute: userPassword
,但仅限于启用了叠加层。否则,将使用上面的消息(pwdAttribute: value #0 invalid per syntax
)拒绝该值。
如果您的OpenLDAP安装使用动态模块,请务必包含
moduleload ppolicy.la
在slapd.conf
文件中(或cn=config
数据库中的相应等效文件)。
然后加载适当数据库的叠加层:
database bdb
suffix "o=example.com"
rootdn "cn=Directory Manager,o=example.com"
rootpw password
directory /opt/openldap-2.4.29/var/openldap-data/example.com
overlay ppolicy
在加载叠加层之前,我只能提供pwdAttribute
的OID。使用--enable-ppolicy
重新构建并添加overlay
条目后,我可以使用ldapmodify将pwdAttribute: 2.5.4.35
替换为pwdAttribute: userPassword
。
我在加载叠加层后必须刷新pwdAttribute
的值。
答案 2 :(得分:1)
我刚遇到这个问题,并且解决方法与上述不同。我在CentOS 6.4上设置了一个新的LDAP(在RHEL 6.4上进行最终部署),它默认为“(cn = config)”配置方案,所以上面提到的所有(无疑是优秀的)修改slapd.conf的指令不适用。
在“(cn = config)”方式(在某些网站上也称为“slapd.d”),有很多步骤可以使叠加层工作。我正在处理的默认CentOS 6.4 LDAP包括ppolicy架构,但它没有被激活。
要实现这一目标,有很多步骤:
首先,“ppolicy”模块是动态的,您必须确保它包含在运行时模块列表中。默认的CentOS安装没有,所以我首先必须打开模块,然后将ppolicy添加到列表中。这个LDIF做到了:
dn: cn=Module{0},cn=config
objectClass: olcModuleList
cn: Module{0}
olcModuleLoad: ppolicy
如果您以后想要添加更多模块,只需在此dn中附加额外的olcModuleLoad条目。
其次,您必须打开要应用它的数据库的叠加层。创建另一个dn,因此:
dn: olcOverlay=ppolicy,olcDatabase={2}bdb,cn=config
objectClass: olcPPolicyConfig
olcOverlay: ppolicy
前两个步骤在“cn = config”域中完成,即在数据库外部由机器的root用户完成。后续步骤在“dc = example,dc = com”范围内,因此可以由rootDN完成。
第三步是为密码策略创建容器。这可能是可选的,我不确定 - 我创建了一个像:
dn: ou=pwpolicies,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou: pwpolicies
第四,创建你的实际策略 - 遇到这个错误的人已经有了这个,这是带有“pwdAttribute”的dn,它会出现语法错误。通过正确完成上述覆盖和模块工作,您可以使用pwdAttribute:userPassword“而不会出现语法错误。当然,我的策略位于ou容器内,除了”pwdPolicy“之外,我使用了”device“的objectClass,正如其他地方所建议的那样。
最后,您当然可以实际使用该策略。
这整个过程让我更加困惑,因为有很多关于如何设置slapd.conf的文档。我将大部分内容拼凑在Zytrax“LDAP for Rocket Scientists”一书中,该书涵盖了模块和覆盖内容,但在密码策略部分中有一个错误或过时的示例(缺少结构对象类)。
答案 3 :(得分:0)
我在新服务器上将2.3转换为2.4,我在Red Hat 6.3上遇到了同样的错误。我使用了pwdAttribute:2.5.4.35而且它没有问题。